Compare commits

...

54 Commits

Author SHA1 Message Date
community-scripts-pr-app[bot]
79c53f72c5 Update CHANGELOG.md (#3543)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-03-31 23:10:51 +02:00
Slaviša Arežina
7c83fcecab Fix sqlite3 failing to build (#3542) 2025-03-31 21:52:02 +01:00
Tobias
d266e6a99c Update yt-dlp-webui.json (#3540) 2025-03-31 22:02:25 +02:00
community-scripts-pr-app[bot]
213107e1a1 Update CHANGELOG.md (#3538)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-03-31 19:48:34 +02:00
Brock Humblet
dff0c3b713 Update PHP to 8.3 (#3510) 2025-03-31 18:19:36 +02:00
CanbiZ
59ebbd37fa Change Frontend Version Info (#3527)
* Change Frontend Version Info

* Fix

* Update ScriptItem.tsx
2025-03-31 17:46:27 +02:00
community-scripts-pr-app[bot]
e6208a4ac6 Update CHANGELOG.md (#3534)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-03-31 17:43:24 +02:00
CanbiZ
6adb811adf core: fix empty header if header in repo exist (#3536) 2025-03-31 17:40:35 +02:00
CanbiZ
b8c5691803 GoMFT: Update Curl Path (#3537)
* GoMFT: Update Curl Path

* Update gomft.sh
2025-03-31 17:39:51 +02:00
CanbiZ
0f5c9dfe42 slskd: fix broken curl (#3533) 2025-03-31 16:39:27 +02:00
community-scripts-pr-app[bot]
65adb8e445 Update versions.json (#3530)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-03-31 15:14:29 +02:00
community-scripts-pr-app[bot]
1df0496083 Update versions.json (#3528)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-03-31 14:19:22 +02:00
community-scripts-pr-app[bot]
781a383a9b Update .app files (#3526)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-03-31 13:26:25 +02:00
community-scripts-pr-app[bot]
27ece60f74 Update CHANGELOG.md (#3524) 2025-03-31 12:02:44 +01:00
push-app-to-main[bot]
ca5de7a6ff slskd (#3516) 2025-03-31 12:01:14 +01:00
CanbiZ
04f781c512 NPMPlus: update function & better create handling (user/password) (#3520)
* Update npmplus-install.sh

* Update npmplus.sh
2025-03-31 12:54:40 +02:00
community-scripts-pr-app[bot]
a95403ece7 Update CHANGELOG.md (#3517)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-03-31 12:23:41 +02:00
CanbiZ
e7529a9c25 Docmost: Bump NodeJS to 22 & fixed pnpm (#3521)
* Docmost: Bump NodeJS to 22 & fixed pnpm

* Update docmost.sh
2025-03-31 12:16:38 +02:00
CanbiZ
3abb4b0060 Tianji: Bump NodeJS to V22 (#3519)
* Tianji: Bump to NodeJS 22

* NodeJS check & update
2025-03-31 10:01:39 +02:00
Jc Miñarro
e35416eb7f Remove old .jar versions of Stirling-PDF (#3512) 2025-03-31 10:01:26 +02:00
CanbiZ
47aa3c3cf2 HomeAssistant (Container): Better Portainer explanation (#3518) 2025-03-31 10:01:13 +02:00
community-scripts-pr-app[bot]
8a07f18678 Update versions.json (#3514)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-03-31 08:46:22 +02:00
community-scripts-pr-app[bot]
67395df39e Update versions.json (#3500)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-03-31 01:05:07 +02:00
community-scripts-pr-app[bot]
8605995aff Update CHANGELOG.md (#3507)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-03-31 01:04:48 +02:00
Slaviša Arežina
6fd77dcd9f Fix Ollama update logic (#3506) 2025-03-30 17:16:55 +02:00
Slaviša Arežina
92c6662abf GoMFT: Add frontend build procedure (#3499) 2025-03-30 16:15:59 +01:00
community-scripts-pr-app[bot]
453210900d Update CHANGELOG.md (#3503)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-03-30 12:36:27 +02:00
Slaviša Arežina
df41b8e707 Open WebUI: Add Ollama update check (#3478)
* Add Ollama update check

* Update openwebui.sh

* Fix Ollama update

* fixes
2025-03-30 11:43:44 +02:00
community-scripts-pr-app[bot]
3939b88b9f Update CHANGELOG.md (#3494) 2025-03-29 21:49:04 +01:00
community-scripts-pr-app[bot]
5be029597b Update .app files (#3495) 2025-03-29 21:48:48 +01:00
CanbiZ
e394dd08b0 Alpine MariaDB (#3456)
* Alpine-MariaDB

* fix deps

* Update install/alpine-mariadb-install.sh

Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>

* space

---------

Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>
2025-03-29 21:38:47 +01:00
community-scripts-pr-app[bot]
5d50d91a26 Update CHANGELOG.md (#3492)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-03-29 21:28:37 +01:00
Slaviša Arežina
1a0f3a6108 Fix wrong sed text (#3491) 2025-03-29 20:44:56 +01:00
community-scripts-pr-app[bot]
d940907e59 Update CHANGELOG.md (#3490)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-03-29 18:07:14 +01:00
Slaviša Arežina
09e7593734 GoMFT: Fix release archive naming (#3483)
* Fix release archive naming

* No uses curl to fetch release

* typo

* Update

* Update
2025-03-29 17:57:22 +01:00
community-scripts-pr-app[bot]
121577c2fd Update CHANGELOG.md (#3485)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-03-29 15:19:33 +01:00
Slaviša Arežina
bcaf34fa96 Fix release parsing (#3484) 2025-03-29 15:12:52 +01:00
community-scripts-pr-app[bot]
87106a60c3 Update versions.json (#3481)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-03-29 14:33:08 +01:00
community-scripts-pr-app[bot]
c63ad45e65 Update CHANGELOG.md (#3480)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-03-29 14:06:52 +01:00
Slaviša Arežina
52bd63bf08 Fix debian-keyring dependency missing (#3477) 2025-03-29 14:04:28 +01:00
Slaviša Arežina
8a5367dae3 Fix temp file (#3476) 2025-03-29 12:21:58 +01:00
community-scripts-pr-app[bot]
8c8b08e037 Update CHANGELOG.md (#3475)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-03-29 10:29:41 +01:00
community-scripts-pr-app[bot]
40b997ddc9 Update versions.json (#3468) 2025-03-29 08:43:55 +01:00
Slaviša Arežina
b87e7dde2b Fix compose.env (#3466) 2025-03-29 08:43:36 +01:00
community-scripts-pr-app[bot]
f46b9bbfb9 Update CHANGELOG.md (#3464)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-03-28 23:24:05 +01:00
Slaviša Arežina
07a3ab353c GoMFT: Fix release grep (#3462)
* Fix release grep

* Fix release grep in update function
2025-03-28 21:31:15 +01:00
Slaviša Arežina
c4cdb030b4 Fix path (#3463) 2025-03-28 21:30:57 +01:00
community-scripts-pr-app[bot]
2ffd827be4 Update CHANGELOG.md (#3452) 2025-03-28 17:13:23 +01:00
community-scripts-pr-app[bot]
515f9ab502 Update .app files (#3460)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-03-28 16:44:48 +01:00
CanbiZ
079b089518 Alpine Node-RED (#3457)
* Alpine Node-RED

* Update alpine-node-red-install.sh
2025-03-28 16:36:32 +01:00
CanbiZ
8300d7725d Update alpine-gitea.sh 2025-03-28 14:16:11 +01:00
CanbiZ
ab45b91c4c move coc
CODE_OF_CONDUCT need to be in .github main folder
2025-03-28 13:23:41 +01:00
community-scripts-pr-app[bot]
b428e8a267 Update versions.json (#3458)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-03-28 13:08:31 +01:00
community-scripts-pr-app[bot]
2643c91516 Update versions.json (#3449) 2025-03-28 08:08:36 +01:00
40 changed files with 1247 additions and 376 deletions

View File

@@ -14,6 +14,90 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
All LXC instances created using this repository come pre-installed with Midnight Commander, which is a command-line tool (`mc`) that offers a user-friendly file and directory management interface for the terminal environment.
## 2025-03-31
### 🆕 New Scripts
- slskd [@vhsdream](https://github.com/vhsdream) ([#3516](https://github.com/community-scripts/ProxmoxVE/pull/3516))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- The Lounge: Fix sqlite3 failing to build [@tremor021](https://github.com/tremor021) ([#3542](https://github.com/community-scripts/ProxmoxVE/pull/3542))
- 2FAuth: Update PHP to 8.3 [@BrockHumblet](https://github.com/BrockHumblet) ([#3510](https://github.com/community-scripts/ProxmoxVE/pull/3510))
- GoMFT: Update Curl Path [@MickLesk](https://github.com/MickLesk) ([#3537](https://github.com/community-scripts/ProxmoxVE/pull/3537))
- slskd: fix broken curl for soularr [@MickLesk](https://github.com/MickLesk) ([#3533](https://github.com/community-scripts/ProxmoxVE/pull/3533))
- Docmost: Bump NodeJS to 22 & fixed pnpm [@MickLesk](https://github.com/MickLesk) ([#3521](https://github.com/community-scripts/ProxmoxVE/pull/3521))
- Tianji: Bump NodeJS to V22 [@MickLesk](https://github.com/MickLesk) ([#3519](https://github.com/community-scripts/ProxmoxVE/pull/3519))
- #### ✨ New Features
- NPMPlus: update function & better create handling (user/password) [@MickLesk](https://github.com/MickLesk) ([#3520](https://github.com/community-scripts/ProxmoxVE/pull/3520))
- #### 🔧 Refactor
- Remove old `.jar` versions of Stirling-PDF [@JcMinarro](https://github.com/JcMinarro) ([#3512](https://github.com/community-scripts/ProxmoxVE/pull/3512))
### 🧰 Maintenance
- #### 💾 Core
- core: fix empty header if header in repo exist [@MickLesk](https://github.com/MickLesk) ([#3536](https://github.com/community-scripts/ProxmoxVE/pull/3536))
### 🌐 Website
- #### ✨ New Features
- Change Frontend Version Info [@MickLesk](https://github.com/MickLesk) ([#3527](https://github.com/community-scripts/ProxmoxVE/pull/3527))
- #### 📝 Script Information
- HomeAssistant (Container): Better Portainer explanation [@MickLesk](https://github.com/MickLesk) ([#3518](https://github.com/community-scripts/ProxmoxVE/pull/3518))
## 2025-03-30
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Open WebUI: Fix Ollama update logic [@tremor021](https://github.com/tremor021) ([#3506](https://github.com/community-scripts/ProxmoxVE/pull/3506))
- GoMFT: Add frontend build procedure [@tremor021](https://github.com/tremor021) ([#3499](https://github.com/community-scripts/ProxmoxVE/pull/3499))
- #### ✨ New Features
- Open WebUI: Add Ollama update check [@tremor021](https://github.com/tremor021) ([#3478](https://github.com/community-scripts/ProxmoxVE/pull/3478))
## 2025-03-29
### 🆕 New Scripts
- Alpine MariaDB [@MickLesk](https://github.com/MickLesk) ([#3456](https://github.com/community-scripts/ProxmoxVE/pull/3456))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Komodo: Fix wrong sed text [@tremor021](https://github.com/tremor021) ([#3491](https://github.com/community-scripts/ProxmoxVE/pull/3491))
- GoMFT: Fix release archive naming [@tremor021](https://github.com/tremor021) ([#3483](https://github.com/community-scripts/ProxmoxVE/pull/3483))
- Homepage: Fix release parsing [@tremor021](https://github.com/tremor021) ([#3484](https://github.com/community-scripts/ProxmoxVE/pull/3484))
- Netdata: Fix debian-keyring dependency missing [@tremor021](https://github.com/tremor021) ([#3477](https://github.com/community-scripts/ProxmoxVE/pull/3477))
- ErsatzTV: Fix temp file reference [@tremor021](https://github.com/tremor021) ([#3476](https://github.com/community-scripts/ProxmoxVE/pull/3476))
- Komodo: Fix compose.env [@tremor021](https://github.com/tremor021) ([#3466](https://github.com/community-scripts/ProxmoxVE/pull/3466))
## 2025-03-28
### 🆕 New Scripts
- Alpine Node-RED [@MickLesk](https://github.com/MickLesk) ([#3457](https://github.com/community-scripts/ProxmoxVE/pull/3457))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- GoMFT: Fix release grep [@tremor021](https://github.com/tremor021) ([#3462](https://github.com/community-scripts/ProxmoxVE/pull/3462))
- ErsatzTV: Fix path in update function [@tremor021](https://github.com/tremor021) ([#3463](https://github.com/community-scripts/ProxmoxVE/pull/3463))
## 2025-03-27
### 🚀 Updated Scripts

View File

@@ -41,8 +41,23 @@ function update_script() {
# Creating Backup
msg_info "Creating Backup"
mv "/opt/2fauth" "/opt/2fauth-backup"
if ! dpkg -l | grep -q 'php8.3'; then
cp /etc/nginx/conf.d/2fauth.conf /etc/nginx/conf.d/2fauth.conf.bak
fi
msg_ok "Backup Created"
# Upgrade PHP
if ! dpkg -l | grep -q 'php8.3'; then
$STD apt-get install -y \
lsb-release \
gpg
curl -fsSL https://packages.sury.org/php/apt.gpg | gpg --dearmor -o /usr/share/keyrings/deb.sury.org-php.gpg
echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list
$STD apt-get update
$STD apt-get install -y php8.3-{bcmath,common,ctype,curl,fileinfo,fpm,gd,mbstring,mysql,xml,cli,intl}
sed -i 's/php8.2/php8.3/g' /etc/nginx/conf.d/2fauth.conf
fi
# Execute Update
wget -q "https://github.com/Bubka/2FAuth/archive/refs/tags/${RELEASE}.zip"
unzip -q "${RELEASE}.zip"
@@ -59,9 +74,14 @@ function update_script() {
php artisan 2fauth:install
$STD systemctl restart nginx
# Cleaning up
msg_info "Cleaning Up"
rm -rf "v${RELEASE}.zip"
if dpkg -l | grep -q 'php8.2'; then
$STD apt-get remove --purge -y php8.2*
fi
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleanup Completed"

46
ct/alpine-mariadb.sh Normal file
View File

@@ -0,0 +1,46 @@
#!/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://mariadb.org
APP="Alpine-MariaDB"
var_tags="${var_tags:-alpine;database}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-256}"
var_disk="${var_disk:-1}"
var_os="${var_os:-alpine}"
var_version="${var_version:-3.21}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
msg_info "Updating Alpine Packages"
$STD apk update
$STD apk upgrade
msg_ok "Updated Alpine Packages"
msg_info "Updating MariaDB"
$STD apk upgrade mariadb mariadb-client
msg_ok "Updated MariaDB"
msg_info "Restarting MariaDB"
$STD rc-service mariadb restart
msg_ok "Restarted MariaDB"
exit 0
}
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 IP:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}${IP}:3306${CL}"

50
ct/alpine-node-red.sh Normal file
View File

@@ -0,0 +1,50 @@
#!/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://nodered.org
APP="Alpine-Node-RED"
var_tags="${var_tags:-alpine;automation}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-256}"
var_disk="${var_disk:-1}"
var_os="${var_os:-alpine}"
var_version="${var_version:-3.21}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
msg_info "Updating Alpine Packages"
$STD apk update
$STD apk upgrade
msg_ok "Updated Alpine Packages"
msg_info "Updating Node.js and npm"
$STD apk upgrade nodejs npm
msg_ok "Updated Node.js and npm"
msg_info "Updating Node-RED"
$STD npm install -g --unsafe-perm node-red
msg_ok "Updated Node-RED"
msg_info "Restarting Node-RED"
$STD rc-service nodered restart
msg_ok "Restarted Node-RED"
exit 0
}
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}:1880${CL}"

View File

@@ -26,6 +26,23 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
if command -v node >/dev/null; then
NODE_MAJOR=$(/usr/bin/env node -v | grep -oP '^v\K[0-9]+')
if [[ "$NODE_MAJOR" != "22" ]]; then
$STD apt-get purge -y nodejs
rm -f /etc/apt/sources.list.d/nodesource.list
rm -f /etc/apt/keyrings/nodesource.gpg
else
return
fi
fi
mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
$STD apt-get update
$STD apt-get install -y nodejs
$STD npm install -g pnpm@10.4.0
export NODE_OPTIONS="--max_old_space_size=4096"
RELEASE=$(curl -s https://api.github.com/repos/docmost/docmost/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Stopping ${APP}"

View File

@@ -39,7 +39,7 @@ function update_script() {
temp_file=$(mktemp)
wget -qO- https://github.com/ErsatzTV/ErsatzTV/releases/download/${RELEASE}/ErsatzTV-${RELEASE}-linux-x64.tar.gz -O "$temp_file"
tar -xzf "$temp_file"
mv /opt/ErsatzTV-${RELEASE}-linux-x64 /opt/ErsatzTV
mv ErsatzTV-${RELEASE}-linux-x64 /opt/ErsatzTV
cp -R ErsatzTV-backup/* /opt/ErsatzTV/
rm -rf ErsatzTV-backup
echo "${RELEASE}" >/opt/${APP}_version.txt

View File

@@ -28,11 +28,17 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -s https://api.github.com/repos/StarFleetCPTN/GoMFT/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
RELEASE=$(curl -fsSL https://api.github.com/repos/StarFleetCPTN/GoMFT/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if ! dpkg -l | grep -q "^ii.*build-essential"; then
$STD apt-get install -y build-essential
fi
if [[ ! -f "/usr/bin/node" ]]; then
mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
$STD apt-get update
$STD apt-get install -y nodejs
fi
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
msg_info "Stopping $APP"
systemctl stop gomft
@@ -41,12 +47,15 @@ function update_script() {
msg_info "Updating $APP to ${RELEASE}"
rm -f /opt/gomft/gomft
temp_file=$(mktemp)
wget -q "https://github.com/StarFleetCPTN/GoMFT/archive/refs/tags/v${RELEASE}.tar.gz" -O $temp_file
curl -fsSL "https://github.com/StarFleetCPTN/GoMFT/archive/refs/tags/v${RELEASE}.tar.gz" -o $temp_file
tar -xzf $temp_file
cp -rf GoMFT-${RELEASE}/* /opt/gomft
cd /opt/gomft
rm -f /opt/gomft/node_modules
$STD npm ci
$STD node build.js
$STD go mod download
$STD go install github.com/a-h/templ/cmd/templ@latest
$STD go get -u github.com/a-h/templ
$STD $HOME/go/bin/templ generate
export CGO_ENABLED=1
export GOOS=linux
@@ -57,7 +66,7 @@ function update_script() {
msg_info "Cleaning Up"
rm -f $temp_file
rm -rf GoMFT-${RELEASE}
rm -rf $HOME/GoMFT-v.${RELEASE}
msg_ok "Cleanup Complete"
msg_info "Starting $APP"

View File

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

View File

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

6
ct/headers/slskd Normal file
View File

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

View File

@@ -40,7 +40,7 @@ function update_script() {
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
msg_info "Updating Homepage to v${RELEASE} (Patience)"
systemctl stop homepage
wget -q https://github.com/gethomepage/homepage/archive/refs/tags/v${RELEASE}.tar.gz
curl -fsSL "https://github.com/gethomepage/homepage/archive/refs/tags/v${RELEASE}.tar.gz" -o $(basename "https://github.com/gethomepage/homepage/archive/refs/tags/v${RELEASE}.tar.gz")
tar -xzf v${RELEASE}.tar.gz
rm -rf v${RELEASE}.tar.gz
cp -r homepage-${RELEASE}/* /opt/homepage/

View File

@@ -20,17 +20,35 @@ color
catch_errors
function update_script() {
UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 1 \
"1" "Check for Alpine Updates" ON \
UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "UPDATE MODE" --radiolist --cancel-button Exit-Script "Spacebar = Select" 14 60 2 \
"1" "Check for Alpine Updates" OFF \
"2" "Update NPMplus Docker Container" ON \
3>&1 1>&2 2>&3)
header_info
if [ "$UPD" == "1" ]; then
apk update && apk upgrade
exit
fi
header_info "$APP"
case "$UPD" in
"1")
msg_info "Updating Alpine OS"
apk update && apk upgrade
msg_ok "System updated"
exit
;;
"2")
msg_info "Updating NPMplus Container"
cd /opt || exit 1
msg_info "Pulling latest container image"
$STD docker compose pull
msg_info "Recreating container"
$STD docker compose up -d
msg_ok "NPMplus container updated"
exit
;;
esac
exit 0
}
start
build_container
description

View File

@@ -27,6 +27,21 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
if [ -x "/usr/bin/ollama" ]; then
msg_info "Updating Ollama"
OLLAMA_VERSION=$(ollama -v | awk '{print $NF}')
RELEASE=$(curl -s https://api.github.com/repos/ollama/ollama/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}')
if [ "$OLLAMA_VERSION" != "$RELEASE" ]; then
curl -fsSLO https://ollama.com/download/ollama-linux-amd64.tgz
tar -C /usr -xzf ollama-linux-amd64.tgz
rm -rf ollama-linux-amd64.tgz
msg_ok "Ollama updated to version $RELEASE"
else
msg_ok "Ollama is already up to date."
fi
fi
msg_info "Updating ${APP} (Patience)"
cd /opt/open-webui
mkdir -p /opt/open-webui-backup

80
ct/slskd.sh Normal file
View File

@@ -0,0 +1,80 @@
#!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: vhsdream
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/slskd/slskd, https://soularr.net
APP="slskd"
var_tags="${var_tags:-arr;p2p}"
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_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/slskd ]] || [[ ! -d /opt/soularr ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -s https://api.github.com/repos/slskd/slskd/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
msg_info "Stopping $APP and Soularr"
systemctl stop slskd soularr.timer soularr.service
msg_ok "Stopped $APP and Soularr"
msg_info "Updating $APP to v${RELEASE}"
tmp_file=$(mktemp)
curl -fsSL "https://github.com/slskd/slskd/releases/download/${RELEASE}/slskd-${RELEASE}-linux-x64.zip" -o $tmp_file
unzip -q -oj $tmp_file slskd -d /opt/${APP}
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to v${RELEASE}"
msg_info "Updating Soularr"
cp /opt/soularr/config.ini /opt/config.ini.bak
cp /opt/soularr/run.sh /opt/run.sh.bak
cd /tmp
rm -rf /opt/soularr
curl -fsSL https://github.com/mrusse/soularr/archive/refs/heads/main.zip
unzip -q main.zip
mv soularr-main /opt/soularr
cd /opt/soularr
$STD pip install -r requirements.txt
mv /opt/config.ini.bak /opt/soularr/config.ini
mv /opt/run.sh.bak /opt/soularr/run.sh
msg_ok "Soularr updated"
msg_info "Starting $APP and Soularr"
systemctl start slskd soularr.timer
msg_ok "Started $APP and Soularr"
msg_info "Cleaning Up"
rm -rf $tmp_file
rm -rf /tmp/main.zip
msg_ok "Cleanup Completed"
else
msg_ok "No update required. ${APP} is already at v${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}:5030${CL}"

View File

@@ -39,6 +39,7 @@ function update_script() {
cd Stirling-PDF-$RELEASE
chmod +x ./gradlew
$STD ./gradlew build
rm -rf /opt/Stirling-PDF/Stirling-PDF-*.jar
cp -r ./build/libs/Stirling-PDF-*.jar /opt/Stirling-PDF/
cp -r scripts /opt/Stirling-PDF/
cd ~

View File

@@ -27,6 +27,13 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
if ! dpkg -l build-essential >/dev/null 2>&1; then
$STD apt-get update
$STD apt-get install -y build-essential
fi
if ! npm list -g node-gyp >/dev/null 2>&1; then
$STD npm install -g node-gyp
fi
RELEASE=$(curl -s https://api.github.com/repos/thelounge/thelounge-deb/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"

View File

@@ -26,6 +26,22 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
if command -v node >/dev/null; then
NODE_MAJOR=$(/usr/bin/env node -v | grep -oP '^v\K[0-9]+')
if [[ "$NODE_MAJOR" != "22" ]]; then
$STD apt-get purge -y nodejs
rm -f /etc/apt/sources.list.d/nodesource.list
rm -f /etc/apt/keyrings/nodesource.gpg
else
return
fi
fi
mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
$STD apt-get update
$STD apt-get install -y nodejs
$STD npm install -g pnpm@9.7.1
RELEASE=$(curl -s https://api.github.com/repos/msgbyte/tianji/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} Service"

View File

@@ -37,10 +37,10 @@
},
{
"text": "config path: `/var/lib/docker/volumes/hass_config/_data`",
"type": "warning"
"type": "info"
},
{
"text": "Portainer Interface: LXC-IP: 9443",
"text": "Portainer interface: $IP: 9443 - User & password must be set manually within 5 minutes, otherwise a restart of Portainer is required!",
"type": "info"
},
{

View File

@@ -24,6 +24,17 @@
"os": "debian",
"version": "12"
}
},
{
"type": "alpine",
"script": "ct/alpine-mariadb.sh",
"resources": {
"cpu": 1,
"ram": 256,
"hdd": 1,
"os": "alpine",
"version": "3.21"
}
}
],
"default_credentials": {

View File

@@ -24,6 +24,17 @@
"os": "debian",
"version": "12"
}
},
{
"type": "alpine",
"script": "ct/alpine-node-red.sh",
"resources": {
"cpu": 1,
"ram": 256,
"hdd": 1,
"os": "alpine",
"version": "3.21"
}
}
],
"default_credentials": {
@@ -32,7 +43,7 @@
},
"notes": [
{
"text": "To install themes, type `update` in the LXC console.",
"text": "To install themes, type `update` in the LXC console. (debian/ubuntu only)",
"type": "info"
}
]

View File

@@ -0,0 +1,43 @@
{
"name": "slskd",
"slug": "slskd",
"categories": [
11
],
"date_created": "2025-03-31",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 5030,
"documentation": "https://github.com/slskd/slskd/tree/master/docs",
"website": "https://github.com/slskd/slskd",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/png/slskd.png",
"description": "A modern client-server application for the Soulseek file sharing network. ",
"install_methods": [
{
"type": "default",
"script": "ct/slskd.sh",
"resources": {
"cpu": 1,
"ram": 512,
"hdd": 4,
"os": "Debian",
"version": "12"
}
}
],
"default_credentials": {
"username": "slskd",
"password": "slskd"
},
"notes": [
{
"text": "See /opt/slskd/config/sksld.yml to add your Soulseek credentials",
"type": "info"
},
{
"text": "This LXC includes Soularr; it needs to be configured (/opt/soularr/config.ini) before it will work",
"type": "info"
}
]
}

View File

@@ -1,13 +1,298 @@
[
{
"name": "fhem/fhem-mirror",
"version": "6.2",
"date": "2025-03-31T10:34:25Z"
},
{
"name": "Checkmk/checkmk",
"version": "v2.3.0p30-rc1",
"date": "2025-03-31T09:39:47Z"
},
{
"name": "semaphoreui/semaphore",
"version": "v2.13.5",
"date": "2025-03-31T09:36:04Z"
},
{
"name": "documenso/documenso",
"version": "v1.10.0-rc.4",
"date": "2025-03-31T09:02:22Z"
},
{
"name": "traefik/traefik",
"version": "v3.3.5",
"date": "2025-03-31T08:55:12Z"
},
{
"name": "fallenbagel/jellyseerr",
"version": "preview-fix-remove-button",
"date": "2025-03-31T08:41:27Z"
},
{
"name": "home-assistant/core",
"version": "2025.3.4",
"date": "2025-03-21T20:22:46Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "v6.2.10",
"date": "2025-03-22T13:02:26Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.22.1712",
"date": "2025-03-31T05:57:14Z"
},
{
"name": "TriliumNext/Notes",
"version": "v0.92.5",
"date": "2025-03-30T12:32:43Z"
},
{
"name": "icereed/paperless-gpt",
"version": "v0.14.2",
"date": "2025-03-30T19:50:38Z"
},
{
"name": "StarFleetCPTN/GoMFT",
"version": "v0.2.4",
"date": "2025-03-30T19:46:08Z"
},
{
"name": "louislam/dockge",
"version": "1.5.0",
"date": "2025-03-30T17:42:59Z"
},
{
"name": "pi-hole/pi-hole",
"version": "v6.0.6",
"date": "2025-03-30T16:59:06Z"
},
{
"name": "sabnzbd/sabnzbd",
"version": "4.5.0",
"date": "2025-03-30T16:17:11Z"
},
{
"name": "Part-DB/Part-DB-server",
"version": "v1.17.0",
"date": "2025-03-30T14:21:53Z"
},
{
"name": "openhab/openhab-core",
"version": "4.3.4",
"date": "2025-03-30T13:32:38Z"
},
{
"name": "pocketbase/pocketbase",
"version": "v0.26.6",
"date": "2025-03-30T08:02:19Z"
},
{
"name": "Prowlarr/Prowlarr",
"version": "v1.32.2.4987",
"date": "2025-03-16T09:41:37Z"
},
{
"name": "Readarr/Readarr",
"version": "v2.0.0.4645",
"date": "2017-03-07T18:56:06Z"
},
{
"name": "Lidarr/Lidarr",
"version": "v2.10.3.4602",
"date": "2025-03-23T11:00:37Z"
},
{
"name": "Radarr/Radarr",
"version": "v5.21.1.9799",
"date": "2025-03-24T15:52:12Z"
},
{
"name": "aceberg/WatchYourLAN",
"version": "2.1.2-alpine",
"date": "2025-03-30T06:25:22Z"
},
{
"name": "pocket-id/pocket-id",
"version": "v0.45.0",
"date": "2025-03-29T23:12:22Z"
},
{
"name": "keycloak/keycloak",
"version": "26.1.4",
"date": "2025-03-13T15:41:42Z"
},
{
"name": "glanceapp/glance",
"version": "v0.7.9",
"date": "2025-03-29T18:08:11Z"
},
{
"name": "theonedev/onedev",
"version": "v11.8.4",
"date": "2025-03-29T08:28:12Z"
},
{
"name": "runtipi/runtipi",
"version": "v3.10.0",
"date": "2025-03-15T14:38:16Z"
},
{
"name": "syncthing/syncthing",
"version": "v1.29.3",
"date": "2025-03-12T11:56:30Z"
"version": "v2.0.0-beta.1",
"date": "2025-03-29T12:53:28Z"
},
{
"name": "tobychui/zoraxy",
"version": "v3.1.9",
"date": "2025-03-01T02:24:33Z"
},
{
"name": "inspircd/inspircd",
"version": "v4.7.0",
"date": "2025-03-29T03:50:50Z"
},
{
"name": "bunkerity/bunkerweb",
"version": "v1.6.1",
"date": "2025-03-15T17:29:17Z"
},
{
"name": "OliveTin/OliveTin",
"version": "2025.3.28",
"date": "2025-03-29T00:18:56Z"
},
{
"name": "msgbyte/tianji",
"version": "v1.19.5",
"date": "2025-03-28T22:03:01Z"
},
{
"name": "homarr-labs/homarr",
"version": "v1.13.1",
"date": "2025-03-28T21:58:30Z"
},
{
"name": "TasmoAdmin/TasmoAdmin",
"version": "v4.2.3",
"date": "2025-02-09T23:07:48Z"
},
{
"name": "gristlabs/grist-core",
"version": "v1.5.0",
"date": "2025-03-28T20:43:51Z"
},
{
"name": "grocy/grocy",
"version": "v4.5.0",
"date": "2025-03-28T19:02:22Z"
},
{
"name": "Brandawg93/PeaNUT",
"version": "v5.6.1",
"date": "2025-03-28T18:40:22Z"
},
{
"name": "NodeBB/NodeBB",
"version": "v4.2.0",
"date": "2025-03-19T18:34:01Z"
},
{
"name": "louislam/uptime-kuma",
"version": "2.0.0-beta.2-temp",
"date": "2025-03-28T08:45:58Z"
},
{
"name": "zitadel/zitadel",
"version": "v2.71.5",
"date": "2025-03-28T15:34:27Z"
},
{
"name": "emqx/emqx",
"version": "e5.9.0-beta.2",
"date": "2025-03-28T15:06:27Z"
},
{
"name": "goauthentik/authentik",
"version": "version/2025.2.3",
"date": "2025-03-28T14:28:34Z"
},
{
"name": "mattermost/mattermost",
"version": "server/public/v0.1.11",
"date": "2025-03-28T14:04:31Z"
},
{
"name": "hakimel/reveal.js",
"version": "5.2.1",
"date": "2025-03-28T13:00:23Z"
},
{
"name": "cockpit-project/cockpit",
"version": "336.2",
"date": "2025-03-28T10:16:47Z"
},
{
"name": "YunoHost/yunohost",
"version": "debian/12.0.12",
"date": "2025-03-16T11:59:24Z"
},
{
"name": "gethomepage/homepage",
"version": "v1.1.1",
"date": "2025-03-28T04:12:31Z"
},
{
"name": "Bubka/2FAuth",
"version": "v5.5.0",
"date": "2025-03-27T22:35:02Z"
},
{
"name": "ellite/Wallos",
"version": "v2.48.1",
"date": "2025-03-27T22:02:16Z"
},
{
"name": "hivemq/hivemq-community-edition",
"version": "2025.2",
"date": "2025-03-27T19:21:13Z"
},
{
"name": "immich-app/immich",
"version": "v1.130.3",
"date": "2025-03-27T16:38:04Z"
},
{
"name": "TandoorRecipes/recipes",
"version": "1.5.34",
"date": "2025-03-27T16:17:38Z"
},
{
"name": "zwave-js/zwave-js-ui",
"version": "v10.1.3",
"date": "2025-03-27T15:51:38Z"
},
{
"name": "home-assistant/operating-system",
"version": "15.0",
"date": "2025-03-17T10:26:18Z"
},
{
"name": "tailscale/tailscale",
"version": "v1.82.0",
"date": "2025-03-27T13:08:18Z"
},
{
"name": "n8n-io/n8n",
"version": "n8n@1.84.3",
"date": "2025-03-27T11:54:33Z"
},
{
"name": "zabbix/zabbix",
"version": "7.2.5",
"date": "2025-03-27T11:06:48Z"
},
{
"name": "evcc-io/evcc",
@@ -19,31 +304,21 @@
"version": "v1.5.1",
"date": "2025-01-01T16:15:52Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.22.1699",
"date": "2025-03-27T05:57:08Z"
},
{
"name": "openobserve/openobserve",
"version": "v0.14.5-rc6",
"date": "2025-03-27T05:15:49Z"
},
{
"name": "StarFleetCPTN/GoMFT",
"version": "v0.2.1",
"date": "2025-03-27T02:08:19Z"
},
{
"name": "fhem/fhem-mirror",
"version": "6.2",
"date": "2025-03-27T02:00:18Z"
},
{
"name": "element-hq/synapse",
"version": "v1.127.1",
"date": "2025-03-26T21:44:28Z"
},
{
"name": "wazuh/wazuh",
"version": "coverity-w13-4.12.0",
"date": "2025-03-26T21:11:43Z"
},
{
"name": "duplicati/duplicati",
"version": "v2.1.0.112-2.1.0.112_canary_2025-03-26",
@@ -51,43 +326,8 @@
},
{
"name": "ollama/ollama",
"version": "v0.6.2",
"date": "2025-03-18T03:11:33Z"
},
{
"name": "runtipi/runtipi",
"version": "nightly",
"date": "2025-03-26T20:06:34Z"
},
{
"name": "glanceapp/glance",
"version": "v0.7.8",
"date": "2025-03-26T19:59:07Z"
},
{
"name": "tailscale/tailscale",
"version": "v1.82.0",
"date": "2025-03-26T19:50:59Z"
},
{
"name": "keycloak/keycloak",
"version": "26.1.4",
"date": "2025-03-13T15:41:42Z"
},
{
"name": "semaphoreui/semaphore",
"version": "v2.13.2",
"date": "2025-03-26T19:13:48Z"
},
{
"name": "wazuh/wazuh",
"version": "coverity-w11-4.12.0",
"date": "2025-03-14T20:04:02Z"
},
{
"name": "immich-app/immich",
"version": "v1.130.2",
"date": "2025-03-26T16:01:25Z"
"version": "v0.6.3-rc1",
"date": "2025-03-26T20:39:01Z"
},
{
"name": "dgtlmoon/changedetection.io",
@@ -99,11 +339,6 @@
"version": "v0.303.0-rc.0",
"date": "2025-03-26T12:48:46Z"
},
{
"name": "n8n-io/n8n",
"version": "n8n@1.84.2",
"date": "2025-03-26T14:11:45Z"
},
{
"name": "jupyter/notebook",
"version": "@jupyter-notebook/ui-components@7.4.0-beta.3",
@@ -114,31 +349,11 @@
"version": "v12.0.0-dev",
"date": "2025-03-26T09:58:55Z"
},
{
"name": "Checkmk/checkmk",
"version": "v2.2.0p41",
"date": "2025-03-26T09:55:26Z"
},
{
"name": "sct/overseerr",
"version": "v1.34.0",
"date": "2025-03-26T08:48:34Z"
},
{
"name": "pocketbase/pocketbase",
"version": "v0.26.4",
"date": "2025-03-26T05:16:46Z"
},
{
"name": "theonedev/onedev",
"version": "v11.8.0",
"date": "2025-03-26T04:41:15Z"
},
{
"name": "cockpit-project/cockpit",
"version": "336.1",
"date": "2025-03-26T04:10:14Z"
},
{
"name": "esphome/esphome",
"version": "2025.3.2",
@@ -149,11 +364,6 @@
"version": "v11.6.0",
"date": "2025-03-25T22:10:15Z"
},
{
"name": "zabbix/zabbix",
"version": "7.2.5rc2",
"date": "2025-03-25T19:25:22Z"
},
{
"name": "Stirling-Tools/Stirling-PDF",
"version": "v0.45.0",
@@ -164,26 +374,11 @@
"version": "v0.34.1",
"date": "2025-03-25T18:11:12Z"
},
{
"name": "aceberg/WatchYourLAN",
"version": "2.1.1",
"date": "2025-03-25T17:21:41Z"
},
{
"name": "pocket-id/pocket-id",
"version": "v0.44.0",
"date": "2025-03-25T16:09:10Z"
},
{
"name": "dotnetfactory/fluid-calendar",
"version": "v1.3.0",
"date": "2025-03-25T15:55:02Z"
},
{
"name": "emqx/emqx",
"version": "v5.8.6",
"date": "2025-03-25T15:22:13Z"
},
{
"name": "hansmi/prometheus-paperless-exporter",
"version": "v0.0.7",
@@ -194,46 +389,21 @@
"version": "jenkins-2.503",
"date": "2025-03-25T14:01:20Z"
},
{
"name": "zwave-js/zwave-js-ui",
"version": "v10.1.2",
"date": "2025-03-25T13:56:22Z"
},
{
"name": "msgbyte/tianji",
"version": "v1.19.3",
"date": "2025-03-25T13:50:19Z"
},
{
"name": "crowdsecurity/crowdsec",
"version": "v1.6.8",
"date": "2025-03-25T13:33:10Z"
},
{
"name": "icereed/paperless-gpt",
"version": "v0.14.1",
"date": "2025-03-25T10:09:14Z"
},
{
"name": "VictoriaMetrics/VictoriaMetrics",
"version": "pmm-6401-v1.114.0",
"date": "2025-03-25T07:58:34Z"
},
{
"name": "zitadel/zitadel",
"version": "v2.70.6",
"date": "2025-03-25T07:11:32Z"
},
{
"name": "caddyserver/caddy",
"version": "v2.9.1",
"date": "2025-01-08T15:22:53Z"
},
{
"name": "fallenbagel/jellyseerr",
"version": "preview-OIDC",
"date": "2025-03-25T00:28:11Z"
},
{
"name": "influxdata/influxdb",
"version": "v3.0.0-0.beta.2",
@@ -259,11 +429,6 @@
"version": "v0.9.0",
"date": "2025-03-24T18:25:37Z"
},
{
"name": "Radarr/Radarr",
"version": "v5.21.1.9799",
"date": "2025-03-24T15:52:12Z"
},
{
"name": "Graylog2/graylog2-server",
"version": "6.2.0-beta.2",
@@ -279,11 +444,6 @@
"version": "v24.8",
"date": "2025-03-18T07:33:51Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "v6.2.10",
"date": "2025-03-22T13:02:26Z"
},
{
"name": "requarks/wiki",
"version": "v2.5.307",
@@ -294,56 +454,26 @@
"version": "v1.17.0",
"date": "2025-03-24T00:46:32Z"
},
{
"name": "Lidarr/Lidarr",
"version": "v2.10.3.4602",
"date": "2025-03-23T11:00:37Z"
},
{
"name": "YunoHost/yunohost",
"version": "debian/12.0.12",
"date": "2025-03-16T11:59:24Z"
},
{
"name": "nicolargo/glances",
"version": "v4.3.1",
"date": "2025-03-23T09:02:54Z"
},
{
"name": "Prowlarr/Prowlarr",
"version": "v1.32.2.4987",
"date": "2025-03-16T09:41:37Z"
},
{
"name": "usememos/memos",
"version": "v0.24.2",
"date": "2025-03-23T04:01:50Z"
},
{
"name": "OliveTin/OliveTin",
"version": "2025.3.23",
"date": "2025-03-23T01:38:55Z"
},
{
"name": "hoarder-app/hoarder",
"version": "sdk/v0.23.0",
"date": "2025-03-22T17:26:10Z"
},
{
"name": "documenso/documenso",
"version": "v1.10.0-rc.1",
"date": "2025-03-22T06:34:33Z"
},
{
"name": "netbox-community/netbox",
"version": "v4.2.6",
"date": "2025-03-21T21:20:29Z"
},
{
"name": "sabnzbd/sabnzbd",
"version": "4.4.1",
"date": "2024-12-20T13:21:31Z"
},
{
"name": "leiweibau/Pi.Alert",
"version": "v2025-03-21",
@@ -354,11 +484,6 @@
"version": "v2.7.6",
"date": "2025-03-21T19:24:53Z"
},
{
"name": "homarr-labs/homarr",
"version": "v1.12.0",
"date": "2025-03-21T19:14:59Z"
},
{
"name": "photoprism/photoprism",
"version": "250321-57590c48b",
@@ -379,11 +504,6 @@
"version": "v1.10.4",
"date": "2025-03-20T18:56:10Z"
},
{
"name": "ellite/Wallos",
"version": "v2.48.0",
"date": "2025-03-20T16:57:43Z"
},
{
"name": "neo4j/neo4j",
"version": "4.4.42",
@@ -399,21 +519,11 @@
"version": "v4.0.7",
"date": "2025-02-26T19:07:11Z"
},
{
"name": "NodeBB/NodeBB",
"version": "v4.2.0",
"date": "2025-03-19T18:34:01Z"
},
{
"name": "seanmorley15/AdventureLog",
"version": "v0.9.0",
"date": "2025-03-19T13:30:02Z"
},
{
"name": "hakimel/reveal.js",
"version": "5.2.0",
"date": "2025-03-19T11:03:56Z"
},
{
"name": "Luligu/matterbridge",
"version": "2.2.5",
@@ -454,36 +564,21 @@
"version": "v0.8.5.11",
"date": "2025-03-17T19:25:25Z"
},
{
"name": "goauthentik/authentik",
"version": "version/2025.2.2",
"date": "2025-03-17T19:16:49Z"
},
{
"name": "Sonarr/Sonarr",
"version": "v4.0.14.2939",
"date": "2025-03-17T19:12:37Z"
},
{
"name": "TriliumNext/Notes",
"version": "v0.92.4",
"date": "2025-03-17T16:00:19Z"
},
{
"name": "home-assistant/operating-system",
"version": "15.0",
"date": "2025-03-17T10:26:18Z"
"name": "inventree/InvenTree",
"version": "0.17.9",
"date": "2025-03-17T12:13:23Z"
},
{
"name": "webmin/webmin",
"version": "2.303",
"date": "2025-03-17T04:54:50Z"
},
{
"name": "gethomepage/homepage",
"version": "v1.0.4",
"date": "2025-03-16T22:19:31Z"
},
{
"name": "autobrr/autobrr",
"version": "v1.60.0",
@@ -509,11 +604,6 @@
"version": "v1.0.0-beta18",
"date": "2025-03-15T20:24:04Z"
},
{
"name": "bunkerity/bunkerweb",
"version": "v1.6.1",
"date": "2025-03-15T17:29:17Z"
},
{
"name": "henrygd/beszel",
"version": "v0.10.2",
@@ -614,16 +704,6 @@
"version": "v21.0.0.0",
"date": "2025-03-09T12:25:44Z"
},
{
"name": "Readarr/Readarr",
"version": "v2.0.0.4645",
"date": "2017-03-07T18:56:06Z"
},
{
"name": "Brandawg93/PeaNUT",
"version": "v5.6.0",
"date": "2025-03-08T19:02:31Z"
},
{
"name": "YuukanOO/seelf",
"version": "v2.4.2",
@@ -684,11 +764,6 @@
"version": "10.1.39",
"date": "2025-03-04T19:05:18Z"
},
{
"name": "pi-hole/pi-hole",
"version": "v6.0.5",
"date": "2025-03-04T17:28:41Z"
},
{
"name": "sysadminsmedia/homebox",
"version": "v0.18.0",
@@ -709,21 +784,6 @@
"version": "2.8.0",
"date": "2025-03-02T04:30:50Z"
},
{
"name": "inspircd/inspircd",
"version": "v4.6.0",
"date": "2025-03-01T10:29:31Z"
},
{
"name": "tobychui/zoraxy",
"version": "v3.1.9",
"date": "2025-03-01T02:24:33Z"
},
{
"name": "grocy/grocy",
"version": "v4.4.2",
"date": "2025-02-28T16:26:05Z"
},
{
"name": "jordan-dalby/ByteStash",
"version": "v1.5.7",
@@ -739,11 +799,6 @@
"version": "v6.11.2",
"date": "2025-02-26T14:54:49Z"
},
{
"name": "Part-DB/Part-DB-server",
"version": "v1.16.1",
"date": "2025-02-26T11:29:15Z"
},
{
"name": "silverbulletmd/silverbullet",
"version": "0.10.4",
@@ -759,11 +814,6 @@
"version": "v12.5.0",
"date": "2025-02-25T14:55:50Z"
},
{
"name": "traefik/traefik",
"version": "v3.3.4",
"date": "2025-02-25T10:18:58Z"
},
{
"name": "schlagmichdoch/PairDrop",
"version": "v1.11.2",
@@ -789,11 +839,6 @@
"version": "5.6.1",
"date": "2025-02-23T20:39:48Z"
},
{
"name": "openhab/openhab-core",
"version": "5.0.0.M1",
"date": "2025-02-23T14:55:36Z"
},
{
"name": "outline/outline",
"version": "v0.82.1-15",
@@ -809,11 +854,6 @@
"version": "v0.18.3",
"date": "2025-02-21T20:51:12Z"
},
{
"name": "gristlabs/grist-core",
"version": "v1.4.2",
"date": "2025-02-18T21:43:36Z"
},
{
"name": "prometheus-pve/prometheus-pve-exporter",
"version": "v3.5.2",
@@ -859,6 +899,11 @@
"version": "1.3.10",
"date": "2025-02-14T16:23:14Z"
},
{
"name": "TryGhost/Ghost-CLI",
"version": "v1.27.0",
"date": "2025-02-13T15:55:36Z"
},
{
"name": "MariaDB/server",
"version": "mariadb-11.7.2",
@@ -879,16 +924,16 @@
"version": "v1.9.0",
"date": "2025-02-11T13:26:42Z"
},
{
"name": "TasmoAdmin/TasmoAdmin",
"version": "v4.2.3",
"date": "2025-02-09T23:07:48Z"
},
{
"name": "dani-garcia/vaultwarden",
"version": "1.33.2",
"date": "2025-02-09T17:54:59Z"
},
{
"name": "slskd/slskd",
"version": "0.22.2",
"date": "2025-02-09T00:00:04Z"
},
{
"name": "blakeblackshear/frigate",
"version": "v0.15.0",
@@ -939,11 +984,6 @@
"version": "1.7.6",
"date": "2025-02-01T09:50:52Z"
},
{
"name": "hivemq/hivemq-community-edition",
"version": "2025.1",
"date": "2025-01-29T10:04:27Z"
},
{
"name": "rustdesk/rustdesk-server",
"version": "1.1.14",
@@ -1009,11 +1049,6 @@
"version": "v0.24.6",
"date": "2024-12-22T20:24:35Z"
},
{
"name": "louislam/uptime-kuma",
"version": "2.0.0-beta.1",
"date": "2024-12-20T08:56:43Z"
},
{
"name": "IceWhaleTech/CasaOS",
"version": "v0.4.15",
@@ -1044,11 +1079,6 @@
"version": "v1.7.3",
"date": "2024-11-27T21:26:11Z"
},
{
"name": "Bubka/2FAuth",
"version": "v5.4.3",
"date": "2024-11-27T14:02:18Z"
},
{
"name": "lldap/lldap",
"version": "v0.6.1",
@@ -1064,6 +1094,11 @@
"version": "0.6.24",
"date": "2024-11-16T06:47:56Z"
},
{
"name": "pterodactyl/panel",
"version": "v1.11.10",
"date": "2024-11-15T02:29:18Z"
},
{
"name": "sabre-io/Baikal",
"version": "0.10.1",
@@ -1169,6 +1204,11 @@
"version": "v2.11.0",
"date": "2024-05-13T20:19:54Z"
},
{
"name": "pterodactyl/wings",
"version": "v1.11.13",
"date": "2024-05-08T04:20:34Z"
},
{
"name": "CrazyWolf13/web-check",
"version": "1.0.0",
@@ -1184,11 +1224,6 @@
"version": "v4.4.3",
"date": "2024-04-06T12:24:35Z"
},
{
"name": "louislam/dockge",
"version": "1.4.2",
"date": "2024-01-21T17:02:52Z"
},
{
"name": "hyperion-project/hyperion.ng",
"version": "2.0.16",
@@ -1198,5 +1233,20 @@
"name": "wger-project/wger",
"version": "2.2",
"date": "2023-12-06T12:08:09Z"
},
{
"name": "deepch/RTSPtoWeb",
"version": "v2.4.3",
"date": "2023-03-29T12:05:02Z"
},
{
"name": "Shinobi-Systems/Shinobi",
"version": "furrykitten-3",
"date": "2022-07-15T05:20:17Z"
},
{
"name": "deluge-torrent/deluge",
"version": "deluge-2.1.2.dev0",
"date": "2022-07-10T13:05:21Z"
}
]

View File

@@ -2,7 +2,7 @@
"name": "yt-dlp-webui",
"slug": "yt-dlp-webui",
"categories": [
14
11
],
"date_created": "2025-03-24",
"type": "ct",

View File

@@ -1,39 +1,29 @@
import { Separator } from "@/components/ui/separator";
import { extractDate } from "@/lib/time";
import { Script, AppVersion } from "@/lib/types";
import { fetchVersions } from "@/lib/data";
import { extractDate } from "@/lib/time";
import { AppVersion, Script } from "@/lib/types";
import { X } from "lucide-react";
import Image from "next/image";
import { basePath } from "@/config/siteConfig";
import { useEffect, useState } from "react";
import { getDisplayValueFromType } from "./ScriptInfoBlocks";
import Alerts from "./ScriptItems/Alerts";
import Buttons from "./ScriptItems/Buttons";
import DefaultPassword from "./ScriptItems/DefaultPassword";
import DefaultSettings from "./ScriptItems/DefaultSettings";
import Description from "./ScriptItems/Description";
import InstallCommand from "./ScriptItems/InstallCommand";
import InterFaces from "./ScriptItems/InterFaces";
import Tooltips from "./ScriptItems/Tooltips";
import { basePath } from "@/config/siteConfig";
import { useEffect, useState } from "react";
function ScriptItem({
item,
setSelectedScript,
}: {
item: Script;
setSelectedScript: (script: string | null) => void;
}) {
function ScriptItem({ item, setSelectedScript }: { item: Script; setSelectedScript: (script: string | null) => void }) {
const closeScript = () => {
window.history.pushState({}, document.title, window.location.pathname);
setSelectedScript(null);
};
const [versions, setVersions] = useState<AppVersion[]>([]);
useEffect(() => {
fetchVersions()
.then((fetchedVersions) => {
@@ -68,10 +58,7 @@ function ScriptItem({
className="h-32 w-32 rounded-lg bg-accent/60 object-contain p-3 shadow-md"
src={item.logo || `/${basePath}/logo.png`}
width={400}
onError={(e) =>
((e.currentTarget as HTMLImageElement).src =
`/${basePath}/logo.png`)
}
onError={(e) => ((e.currentTarget as HTMLImageElement).src = `/${basePath}/logo.png`)}
height={400}
alt={item.name}
unoptimized
@@ -89,35 +76,165 @@ function ScriptItem({
Default OS: {os} {version}
</p>
</div>
<div className="flex gap-5">
<DefaultSettings item={item} />
</div>
<div>{versions.length === 0 ? (<p>Loading versions...</p>) :
(<>
<p className="text-l text-foreground">Version:</p>
<p className="text-l text-muted-foreground">{versions.find((v) =>
v.name === item.slug.replace(/[^a-z0-9]/g, '') ||
v.name.includes(item.slug.replace(/[^a-z0-9]/g, '')) ||
v.name.replace(/[^a-z0-9]/g, '') === item.slug.replace(/[^a-z0-9]/g, '')
<div className="flex min-w-[600px] flex-wrap gap-6 text-sm text-muted-foreground">
{(() => {
const getDisplayValueFromRAM = (ram: number) =>
ram >= 1024 ? `${Math.floor(ram / 1024)}GB` : `${ram}MB`;
)?.version || "No Version information found"
}</p>
<p className="text-l text-foreground">Latest Version changes(Pulled from newreleases.io):</p>
<p className="text-l text-muted-foreground">
{(() => {
const matchedVersion = versions.find((v) =>
v.name === item.slug.replace(/[^a-z0-9]/g, '') ||
v.name.includes(item.slug.replace(/[^a-z0-9]/g, '')) ||
v.name.replace(/[^a-z0-9]/g, '') === item.slug.replace(/[^a-z0-9]/g, '')
);
return matchedVersion?.date ?
extractDate(matchedVersion.date as unknown as string) :
"No date information found"
})()}
</p>
</>)
}
const IconText = ({ icon, label }: { icon: React.ReactNode; label: string }) => (
<span className="flex items-center gap-1">
{icon}
{label}
</span>
);
const CPUIcon = (
<svg
xmlns="http://www.w3.org/2000/svg"
className="w-4 h-4"
fill="none"
viewBox="0 0 24 24"
stroke="currentColor"
strokeWidth={2}
>
<rect x="9" y="9" width="6" height="6" />
<path d="M3 9h2m14 0h2M3 15h2m14 0h2M9 3v2m6-2v2M9 19v2m6-2v2" />
</svg>
);
const RAMIcon = (
<svg
xmlns="http://www.w3.org/2000/svg"
className="w-4 h-4"
fill="none"
viewBox="0 0 24 24"
stroke="currentColor"
strokeWidth={2}
>
<rect x="4" y="6" width="16" height="12" rx="2" ry="2" />
<path d="M8 6v12M16 6v12" />
</svg>
);
const HDDIcon = (
<svg
xmlns="http://www.w3.org/2000/svg"
className="w-4 h-4"
fill="none"
viewBox="0 0 24 24"
stroke="currentColor"
strokeWidth={2}
>
<path d="M4 4h16v16H4z" />
<circle cx="8" cy="16" r="1" />
<circle cx="16" cy="16" r="1" />
</svg>
);
const ResourceDisplay = ({
title,
cpu,
ram,
hdd,
}: {
title: string;
cpu: number | null;
ram: number | null;
hdd: number | null;
}) => {
const getDisplayValueFromRAM = (ram: number) =>
ram >= 1024 ? `${Math.floor(ram / 1024)}GB` : `${ram}MB`;
const IconText = ({ icon, label }: { icon: React.ReactNode; label: string }) => (
<span className="flex items-center gap-1 whitespace-nowrap">
{icon}
{label}
</span>
);
const hasCPU = typeof cpu === "number" && cpu > 0;
const hasRAM = typeof ram === "number" && ram > 0;
const hasHDD = typeof hdd === "number" && hdd > 0;
if (!hasCPU && !hasRAM && !hasHDD) return null;
return (
<div className="flex flex-wrap items-center gap-1">
<span className="font-semibold text-foreground">{title}:</span>
{hasCPU && (
<>
<IconText icon={CPUIcon} label={`CPU: ${cpu} vCPU`} />
<span>|</span>
</>
)}
{hasRAM && (
<>
<IconText icon={RAMIcon} label={`RAM: ${getDisplayValueFromRAM(ram!)}`} />
<span>|</span>
</>
)}
{hasHDD && <IconText icon={HDDIcon} label={`HDD: ${hdd} GB`} />}
</div>
);
};
const defaultSettings = item.install_methods.find((method) => method.type === "default");
const alpineSettings = item.install_methods.find((method) => method.type === "alpine");
return (
<>
{defaultSettings?.resources && (
<ResourceDisplay
title="Default"
cpu={defaultSettings.resources.cpu}
ram={defaultSettings.resources.ram}
hdd={defaultSettings.resources.hdd}
/>
)}
{alpineSettings?.resources && (
<ResourceDisplay
title="Alpine"
cpu={alpineSettings.resources.cpu}
ram={alpineSettings.resources.ram}
hdd={alpineSettings.resources.hdd}
/>
)}
</>
);
})()}
</div>
{(() => {
if (versions.length === 0) {
return <p>Loading versions...</p>;
}
const cleanSlug = item.slug.replace(/[^a-z0-9]/gi, "").toLowerCase();
const matched = versions.find((v) => {
const cleanName = v.name.replace(/[^a-z0-9]/gi, "").toLowerCase();
return cleanName === cleanSlug || cleanName.includes(cleanSlug);
});
if (!matched) return null;
return (
<div className="flex items-center gap-2 text-sm text-muted-foreground mt-2">
<span className="text-foreground">
Version: {matched.version} (
{extractDate(
matched.date instanceof Date ? matched.date.toISOString() : matched.date || "",
)}
</span>
<span
title="Crawled version from newreleases.io"
className="cursor-help rounded-full border border-green-500 px-2 py-0.5 text-xs font-semibold text-green-500"
>
Info
</span>
</div>
);
})()}
</div>
</div>
</div>
@@ -134,9 +251,7 @@ function ScriptItem({
</div>
<div className="mt-4 rounded-lg border bg-accent/50">
<div className="flex gap-3 px-4 py-2">
<h2 className="text-lg font-semibold">
How to {item.type == "misc" ? "use" : "install"}
</h2>
<h2 className="text-lg font-semibold">How to {item.type == "misc" ? "use" : "install"}</h2>
<Tooltips item={item} />
</div>
<Separator className="w-full"></Separator>

View File

@@ -14,10 +14,19 @@ network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
lsb-release \
gpg
curl -fsSL https://packages.sury.org/php/apt.gpg | gpg --dearmor -o /usr/share/keyrings/deb.sury.org-php.gpg
echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list
$STD apt-get update
$STD apt-get install -y \
nginx \
composer \
php8.2-{bcmath,common,ctype,curl,fileinfo,fpm,gd,mbstring,mysql,xml,cli} \
php8.3-{bcmath,common,ctype,curl,fileinfo,fpm,gd,mbstring,mysql,xml,cli} \
mariadb-server
msg_ok "Installed Dependencies"
@@ -90,7 +99,7 @@ server {
error_page 404 /index.php;
location ~ \.php\$ {
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME \$realpath_root\$fastcgi_script_name;
include fastcgi_params;
}

View File

@@ -0,0 +1,59 @@
#!/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://mariadb.org/
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apk add \
gpg \
sudo
msg_ok "Installed Dependencies"
msg_info "Installing MariaDB"
$STD apk add --no-cache mariadb mariadb-client
$STD rc-update add mariadb default
$STD rc-service mariadb start
msg_ok "Installed MariaDB"
msg_info "Configuring MariaDB"
mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql >/dev/null 2>&1
$STD rc-service mariadb restart
msg_ok "MariaDB Configured"
read -r -p "Would you like to install Adminer with lighthttpd? <y/N>: " prompt
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
msg_info "Installing Adminer"
$STD apk add --no-cache lighttpd php php-cgi php-mysqli php-mbstring php-zip php-gd php-json php-curl jq
sed -i 's|server.modules += ( "mod_cgi" )|server.modules += ( "mod_cgi", "mod_fastcgi" )|' /etc/lighttpd/lighttpd.conf
echo 'fastcgi.server += ( ".php" => (( "bin-path" => "/usr/bin/php-cgi", "socket" => "/var/run/php-cgi.sock" )))' >>/etc/lighttpd/lighttpd.conf
ADMINER_VERSION=$(curl -s https://api.github.com/repos/vrana/adminer/releases/latest | jq -r '.tag_name' | sed 's/v//')
wget -q -O /var/www/adminer.php "https://github.com/vrana/adminer/releases/download/v${ADMINER_VERSION}/adminer-${ADMINER_VERSION}.php"
chown lighttpd:lighttpd /var/www/adminer.php
chmod 755 /var/www/adminer.php
msg_ok "Adminer Installed"
msg_info "Starting Lighttpd"
$STD rc-update add lighttpd default
$STD rc-service lighttpd restart
msg_ok "Lighttpd Started"
echo -e "Adminer is available at: ${BL}http://$(hostname -I | awk '{print $1}')/adminer${CL}"
else
echo -e "Skipped Adminer Installation..."
fi
motd_ssh
customize
msg_info "Cleaning up"
msg_ok "Cleaned"

View File

@@ -0,0 +1,56 @@
#!/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://nodered.org/
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apk add --no-cache \
gpg \
git \
nodejs \
npm
msg_ok "Installed Dependencies"
msg_info "Creating Node-RED User"
adduser -D -H -s /sbin/nologin -G users nodered
msg_ok "Created Node-RED User"
msg_info "Installing Node-RED"
npm install -g --unsafe-perm node-red
msg_ok "Installed Node-RED"
msg_info "Creating Node-RED Service"
service_path="/etc/init.d/nodered"
echo '#!/sbin/openrc-run
description="Node-RED Service"
command="/usr/bin/node-red"
command_args="--max-old-space-size=128 -v"
command_user="nodered"
pidfile="/var/run/nodered.pid"
depend() {
use net
}' >$service_path
chmod +x $service_path
$STD rc-update add nodered default
msg_ok "Created Node-RED Service"
msg_info "Starting Node-RED"
$STD service nodered start
msg_ok "Started Node-RED"
motd_ssh
customize

View File

@@ -24,13 +24,13 @@ msg_ok "Installed Dependencies"
msg_info "Setting up Node.js Repository"
mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
msg_ok "Set up Node.js Repository"
msg_info "Installing Node.js"
$STD apt-get update
$STD apt-get install -y nodejs
$STD npm install -g pnpm
$STD npm install -g pnpm@10.4.0
msg_ok "Installed Node.js"
msg_info "Setting up PostgreSQL"

View File

@@ -35,6 +35,7 @@ fi
msg_ok "Set Up Hardware Acceleration"
msg_info "Installing ErsatzTV"
temp_file=$(mktemp)
cd /opt
RELEASE=$(curl -s https://api.github.com/repos/ErsatzTV/ErsatzTV/releases | grep -oP '"tag_name": "\K[^"]+' | head -n 1)
wget -qO- "https://github.com/ErsatzTV/ErsatzTV/releases/download/${RELEASE}/ErsatzTV-${RELEASE}-linux-x64.tar.gz" -O "$temp_file"

View File

@@ -19,7 +19,8 @@ $STD apt-get install -y \
rclone \
tzdata \
ca-certificates \
build-essential
build-essential \
gnupg
msg_ok "Installed Dependencies"
msg_info "Setting up Golang"
@@ -32,15 +33,29 @@ ln -sf /usr/local/go/bin/go /usr/local/bin/go
set -o pipefail
msg_ok "Setup Golang"
msg_info "Setting up Node.js Repository"
mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
msg_ok "Set up Node.js Repository"
msg_info "Installing Node.js"
$STD apt-get update
$STD apt-get install -y nodejs
msg_ok "Installed Node.js"
msg_info "Setup ${APPLICATION} (Patience)"
temp_file=$(mktemp)
RELEASE=$(curl -s https://api.github.com/repos/StarFleetCPTN/GoMFT/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
wget -q "https://github.com/StarFleetCPTN/GoMFT/archive/refs/tags/v${RELEASE}.tar.gz" -O $temp_file
RELEASE=$(curl -fsSL https://api.github.com/repos/StarFleetCPTN/GoMFT/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
curl -fsSL "https://github.com/StarFleetCPTN/GoMFT/archive/refs/tags/v${RELEASE}.tar.gz" -o $temp_file
tar -xzf $temp_file
mv GoMFT-${RELEASE}/ /opt/gomft
cd /opt/gomft
$STD npm ci
$STD node build.js
$STD go mod download
$STD go install github.com/a-h/templ/cmd/templ@latest
$STD go get -u github.com/a-h/templ
$STD $HOME/go/bin/templ generate
export CGO_ENABLED=1
export GOOS=linux

View File

@@ -32,7 +32,7 @@ msg_ok "Installed Node.js"
LOCAL_IP=$(hostname -I | awk '{print $1}')
RELEASE=$(curl -s https://api.github.com/repos/gethomepage/homepage/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
msg_info "Installing Homepage v${RELEASE} (Patience)"
wget -q https://github.com/gethomepage/homepage/archive/refs/tags/v${RELEASE}.tar.gz
curl -fsSL "https://github.com/gethomepage/homepage/archive/refs/tags/v${RELEASE}.tar.gz" -o $(basename "https://github.com/gethomepage/homepage/archive/refs/tags/v${RELEASE}.tar.gz")
$STD tar -xzf v${RELEASE}.tar.gz
rm -rf v${RELEASE}.tar.gz
mkdir -p /opt/homepage/config

View File

@@ -70,9 +70,9 @@ PASSKEY=$(openssl rand -base64 24 | tr -d '/+=')
WEBHOOK_SECRET=$(openssl rand -base64 24 | tr -d '/+=')
JWT_SECRET=$(openssl rand -base64 24 | tr -d '/+=')
sed -i "s/^DB_USERNAME=.*/DB_USERNAME=komodo_admin/" /opt/komodo/compose.env
sed -i "s/^DB_PASSWORD=.*/DB_PASSWORD=${DB_PASSWORD}/" /opt/komodo/compose.env
sed -i "s/^PASSKEY=.*/PASSKEY=${PASSKEY}/" /opt/komodo/compose.env
sed -i "s/^KOMODO_DB_USERNAME=.*/KOMODO_DB_USERNAME=komodo_admin/" /opt/komodo/compose.env
sed -i "s/^KOMODO_DB_PASSWORD=.*/KOMODO_DB_PASSWORD=${DB_PASSWORD}/" /opt/komodo/compose.env
sed -i "s/^KOMODO_PASSKEY=.*/KOMODO_PASSKEY=${PASSKEY}/" /opt/komodo/compose.env
sed -i "s/^KOMODO_WEBHOOK_SECRET=.*/KOMODO_WEBHOOK_SECRET=${WEBHOOK_SECRET}/" /opt/komodo/compose.env
sed -i "s/^KOMODO_JWT_SECRET=.*/KOMODO_JWT_SECRET=${JWT_SECRET}/" /opt/komodo/compose.env
msg_ok "Setup Komodo Environment"

View File

@@ -15,14 +15,9 @@ update_os
msg_info "Installing Dependencies"
$STD apk add \
newt \
curl \
openssh \
tzdata \
nano \
gawk \
yq \
mc
yq
msg_ok "Installed Dependencies"
msg_info "Installing Docker & Compose"
@@ -95,7 +90,7 @@ customize
msg_info "Retrieving Default Login (Patience)"
PASSWORD_FOUND=0
for i in {1..60}; do
PASSWORD_LINE=$(docker logs "$CONTAINER_ID" 2>&1 | grep -m1 "Creating a new user:")
PASSWORD_LINE=$(docker logs "$CONTAINER_ID" 2>&1 | awk '/Creating a new user:/ { print; exit }')
if [[ -n "$PASSWORD_LINE" ]]; then
PASSWORD=$(echo "$PASSWORD_LINE" | awk -F 'password: ' '{print $2}')
echo -e "username: admin@example.org\npassword: $PASSWORD" >/opt/.npm_pwd
@@ -107,5 +102,6 @@ for i in {1..60}; do
done
if [[ $PASSWORD_FOUND -eq 0 ]]; then
msg_ok "No default login found, use docker ps & docker logs for container password."
msg_error "Could not retrieve default login after 60 seconds."
echo -e "\nYou can manually check the container logs with:\n docker logs $CONTAINER_ID | grep 'Creating a new user:'\n"
fi

120
install/slskd-install.sh Normal file
View File

@@ -0,0 +1,120 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: vhsdream
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/slskd/slskd/, https://soularr.net
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y \
python3-pip
msg_ok "Installed Dependencies"
msg_info "Setup ${APPLICATION}"
tmp_file=$(mktemp)
RELEASE=$(curl -s https://api.github.com/repos/slskd/slskd/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
curl -fsSL "https://github.com/slskd/slskd/releases/download/${RELEASE}/slskd-${RELEASE}-linux-x64.zip" -o $tmp_file
unzip -q $tmp_file -d /opt/${APPLICATION}
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
JWT_KEY=$(openssl rand -base64 44)
SLSKD_API_KEY=$(openssl rand -base64 44)
cp /opt/${APPLICATION}/config/slskd.example.yml /opt/${APPLICATION}/config/slskd.yml
sed -i \
-e "\|web:|,\|cidr|s|^#||" \
-e "\|https:|,\|5031|s|false|true|" \
-e "\|api_keys|,\|cidr|s|<some.*$|$SLSKD_API_KEY|; \
s|role: readonly|role: readwrite|; \
s|0.0.0.0/0,::/0|& # Replace this with your subnet|" \
-e "\|soulseek|,\|write_queue|s|^#||" \
-e "\|jwt:|,\|ttl|s|key: ~|key: $JWT_KEY|" \
/opt/${APPLICATION}/config/slskd.yml
msg_ok "Setup ${APPLICATION}"
msg_info "Installing Soularr"
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
cd /tmp
curl -fsSL -o main.zip https://github.com/mrusse/soularr/archive/refs/heads/main.zip
unzip -q main.zip
mv soularr-main /opt/soularr
cd /opt/soularr
$STD pip install -r requirements.txt
sed -i \
-e "\|[Slskd]|,\|host_url|s|yourslskdapikeygoeshere|$SLSKD_API_KEY|" \
-e "/host_url/s/slskd/localhost/" \
/opt/soularr/config.ini
sed -i \
-e "/#This\|#Default\|INTERVAL/{N;d;}" \
-e "/while\|#Pass/d" \
-e "\|python|s|app|opt/soularr|; s|python|python3|" \
-e "/dt/,+2d" \
/opt/soularr/run.sh
sed -i -E "/(soularr.py)/s/.{5}$//; /if/,/fi/s/.{4}//" /opt/soularr/run.sh
chmod +x /opt/soularr/run.sh
msg_ok "Installed Soularr"
msg_info "Creating Services"
cat <<EOF >/etc/systemd/system/${APPLICATION}.service
[Unit]
Description=${APPLICATION} Service
After=network.target
Wants=network.target
[Service]
WorkingDirectory=/opt/${APPLICATION}
ExecStart=/opt/${APPLICATION}/slskd --config /opt/${APPLICATION}/config/slskd.yml
Restart=always
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF >/etc/systemd/system/soularr.timer
[Unit]
Description=Soularr service timer
RefuseManualStart=no
RefuseManualStop=no
[Timer]
Persistent=true
# run every 5 minutes
OnCalendar=*-*-* *:0/5:00
Unit=soularr.service
[Install]
WantedBy=timers.target
EOF
cat <<EOF >/etc/systemd/system/soularr.service
[Unit]
Description=Soularr service
After=network.target slskd.service
[Service]
Type=simple
WorkingDirectory=/opt/soularr
ExecStart=/bin/bash -c /opt/soularr/run.sh
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now ${APPLICATION}.service
systemctl enable -q soularr.timer
msg_ok "Created Services"
motd_ssh
customize
msg_info "Cleaning up"
rm -rf $tmp_file
rm -rf /tmp/main.zip
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -14,7 +14,9 @@ network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y gpg
$STD apt-get install -y \
gpg \
build-essential
msg_ok "Installed Dependencies"
msg_info "Setting up Node.js Repository"
@@ -27,6 +29,7 @@ msg_info "Installing Node.js"
$STD apt-get update
$STD apt-get install -y nodejs
$STD npm install --global yarn
$STD npm install --global node-gyp
msg_ok "Installed Node.js"
msg_info "Installing The Lounge"

View File

@@ -30,7 +30,7 @@ msg_ok "Installed Dependencies"
msg_info "Installing Node.js"
mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
$STD apt-get update
$STD apt-get install -y nodejs
$STD npm install -g pnpm@9.7.1

View File

@@ -295,7 +295,7 @@ get_header() {
mkdir -p "/usr/local/community-scripts/headers"
# Check if local file already present
if [ ! -f "$local_header_path" ]; then
if [ ! -s "$local_header_path" ]; then
wget -qO "$local_header_path" "$header_url"
if [ $? -ne 0 ]; then
echo -e "${WARN}${BOLD}${YLW}Failed to download header for ${app_name}. No header will be displayed.${CL}"

View File

@@ -59,6 +59,7 @@ install() {
header_info
msg_info "Setting up repository"
$STD apt-get install -y debian-keyring
wget -q https://repo.netdata.cloud/repos/repoconfig/debian/bookworm/netdata-repo_5-1+debian12_all.deb
$STD dpkg -i netdata-repo_5-1+debian12_all.deb
rm -rf netdata-repo_5-1+debian12_all.deb