Compare commits

..

38 Commits

Author SHA1 Message Date
community-scripts-pr-app[bot]
9710f32a16 Update CHANGELOG.md (#9139)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-14 00:13:22 +00:00
community-scripts-pr-app[bot]
fd5c07971a Update versions.json (#9138)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-14 01:13:03 +01:00
community-scripts-pr-app[bot]
2ff9471d65 Update CHANGELOG.md (#9136)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-13 20:46:13 +00:00
Michel Roegl-Brunner
8edab22d32 Remove Barcodebuddy (#9135)
* Delete ct/barcode-buddy.sh

* Delete ct/headers/barcode-buddy

* Delete frontend/public/json/barcode-buddy.json

* Delete install/barcode-buddy-install.sh
2025-11-13 21:45:48 +01:00
community-scripts-pr-app[bot]
471dda0e58 Update CHANGELOG.md (#9134)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-13 19:39:27 +00:00
push-app-to-main[bot]
401d0f83a3 Netvisor (#9133) 2025-11-13 20:39:04 +01:00
community-scripts-pr-app[bot]
0785df368a Update CHANGELOG.md (#9130)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-13 12:31:04 +00:00
Slaviša Arežina
7a787c58a0 Domain Monitor: Add domain checking cron (#9129)
* Add cron

* Update
2025-11-13 13:30:37 +01:00
community-scripts-pr-app[bot]
b0fb6bc64d Update versions.json (#9128)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-13 13:06:46 +01:00
community-scripts-pr-app[bot]
ac3615e121 Update CHANGELOG.md (#9127)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-13 11:38:28 +00:00
community-scripts-pr-app[bot]
e94ab29f86 Update CHANGELOG.md (#9126)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-13 11:38:19 +00:00
CanbiZ
06c0dad4f5 tools.func: improve Rust setup and crate installation logic (#9120)
* tools.func: improve Rust setup and crate installation logic

Enhances the setup_rust function to better handle Rust toolchain installation, updates, and verification. Improves global crate installation by handling upgrades, version checks, and error reporting, and adds more informative messaging throughout the process.

* Update tools.func

* Refine comment on setting default Rust toolchain

Removed redundant comment about fixing old installations.
2025-11-13 12:38:04 +01:00
community-scripts-pr-app[bot]
1d1960e98f Update CHANGELOG.md (#9125)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-13 11:37:53 +00:00
Slaviša Arežina
108b4b7c31 Update DATABASE_URL to use mariadb version (#9124) 2025-11-13 12:37:29 +01:00
community-scripts-pr-app[bot]
5e35ba7add Update CHANGELOG.md (#9121)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-13 10:24:10 +00:00
CanbiZ
522fcc1282 Fix: filebrowser-quantum update (#9115) 2025-11-13 11:23:48 +01:00
CanbiZ
8a053bf79f Refactor: Paperless-NGX Backup-Handler 2025-11-13 10:57:15 +01:00
CanbiZ
5776f67afd quickfix broken setup_java 2025-11-13 10:17:51 +01:00
community-scripts-pr-app[bot]
4c717c3330 Update CHANGELOG.md (#9119)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-13 08:44:23 +00:00
Maximilian Bosche
9eb6a844c0 possible fix for #9109 (#9110) 2025-11-13 09:43:55 +01:00
community-scripts-pr-app[bot]
bec36e8247 Update CHANGELOG.md (#9118)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-13 08:35:51 +00:00
CanbiZ
c5a40499c9 Downgrade Swizzin to Debian 12 Bookworm (#9116) 2025-11-13 09:35:20 +01:00
community-scripts-pr-app[bot]
02f1e738d9 Update CHANGELOG.md (#9113)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-13 00:14:34 +00:00
community-scripts-pr-app[bot]
d7e3e4b8c6 Update versions.json (#9112)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-13 01:14:10 +01:00
community-scripts-pr-app[bot]
6c0287c17a Update CHANGELOG.md (#9108)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-12 21:14:01 +00:00
Michael
f287cb8023 Update evcc.sh (#9107)
Added missing "fi" at line 38
2025-11-12 22:13:35 +01:00
community-scripts-pr-app[bot]
6677685ba8 Update CHANGELOG.md (#9103)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-12 20:13:28 +00:00
Chris
2cf7b446c0 Create new env file from example; fix installation & update (#9097) 2025-11-12 21:12:57 +01:00
community-scripts-pr-app[bot]
afdcc2a624 Update CHANGELOG.md (#9102)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-12 20:10:05 +00:00
Chris
817edd6d9c PeaNUT: use clean install flag during update (#9100)
- Fixes an issue with middleware update
- also removed semicolon from tags
2025-11-12 21:09:42 +01:00
community-scripts-pr-app[bot]
6883a39ef7 Update CHANGELOG.md (#9094)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-12 17:07:34 +00:00
community-scripts-pr-app[bot]
a85514dd2b Update CHANGELOG.md (#9093)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-12 17:07:13 +00:00
community-scripts-pr-app[bot]
9bb4bf020f Update date in json (#9092)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-11-12 17:07:11 +00:00
push-app-to-main[bot]
e5e44f4ebf Miniflux (#9091) 2025-11-12 18:07:07 +01:00
push-app-to-main[bot]
6781963f46 'Add new script' (#9090) 2025-11-12 18:06:42 +01:00
Michel Roegl-Brunner
93bcba16c4 Remove: Fenrus (#9088)
* Delete ct/fenrus.sh

* Delete ct/headers/fenrus

* Delete install/fenrus-install.sh

* Delete frontend/public/json/fenrus.json
2025-11-12 16:36:20 +01:00
CanbiZ
dc809eeda4 Change default value syntax for component variable 2025-11-12 14:54:17 +01:00
community-scripts-pr-app[bot]
aa770beff4 Update versions.json (#9084)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-11-12 13:06:39 +01:00
36 changed files with 993 additions and 668 deletions

View File

@@ -10,14 +10,47 @@
> [!CAUTION]
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
## 2025-11-12
## 2025-11-14
## 2025-11-13
### 🆕 New Scripts
- Netvisor ([#9133](https://github.com/community-scripts/ProxmoxVE/pull/9133))
### 🚀 Updated Scripts
- openwebui: Python version usage | core: zsh completion install [@MickLesk](https://github.com/MickLesk) ([#9079](https://github.com/community-scripts/ProxmoxVE/pull/9079))
- #### 🐞 Bug Fixes
- Domain Monitor: Add domain checking cron [@tremor021](https://github.com/tremor021) ([#9129](https://github.com/community-scripts/ProxmoxVE/pull/9129))
- Kimai: Fix for MariaDB connection URL [@tremor021](https://github.com/tremor021) ([#9124](https://github.com/community-scripts/ProxmoxVE/pull/9124))
- Fix: filebrowser-quantum update [@MickLesk](https://github.com/MickLesk) ([#9115](https://github.com/community-scripts/ProxmoxVE/pull/9115))
- tools.func: fix wrong output for setup_java (error token is "0") [@snow2k9](https://github.com/snow2k9) ([#9110](https://github.com/community-scripts/ProxmoxVE/pull/9110))
- #### ✨ New Features
- tools.func: improve Rust setup and crate installation logic [@MickLesk](https://github.com/MickLesk) ([#9120](https://github.com/community-scripts/ProxmoxVE/pull/9120))
- #### 💥 Breaking Changes
- Remove Barcodebuddy [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#9135](https://github.com/community-scripts/ProxmoxVE/pull/9135))
- Downgrade Swizzin to Debian 12 Bookworm [@MickLesk](https://github.com/MickLesk) ([#9116](https://github.com/community-scripts/ProxmoxVE/pull/9116))
## 2025-11-12
### 🆕 New Scripts
- Miniflux ([#9091](https://github.com/community-scripts/ProxmoxVE/pull/9091))
- Splunk Enterprise ([#9090](https://github.com/community-scripts/ProxmoxVE/pull/9090))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- evcc: add missing fi in update [@MichaelVetter1979](https://github.com/MichaelVetter1979) ([#9107](https://github.com/community-scripts/ProxmoxVE/pull/9107))
- PeaNUT: use clean install flag during update [@vhsdream](https://github.com/vhsdream) ([#9100](https://github.com/community-scripts/ProxmoxVE/pull/9100))
- Tududi: Create new env file from example; fix installation & update [@vhsdream](https://github.com/vhsdream) ([#9097](https://github.com/community-scripts/ProxmoxVE/pull/9097))
- openwebui: Python version usage | core: zsh completion install [@MickLesk](https://github.com/MickLesk) ([#9079](https://github.com/community-scripts/ProxmoxVE/pull/9079))
- Refactor: evcc [@CrazyWolf13](https://github.com/CrazyWolf13) ([#9057](https://github.com/community-scripts/ProxmoxVE/pull/9057))
- #### ✨ New Features

View File

@@ -1,69 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: bvdberg01
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/Forceu/barcodebuddy
APP="Barcode-Buddy"
var_tags="${var_tags:-grocery;household}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}"
var_disk="${var_disk:-3}"
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/barcodebuddy ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "barcodebuddy" "Forceu/barcodebuddy"; then
msg_info "Stopping Service"
systemctl stop apache2
systemctl stop barcodebuddy
msg_ok "Stopped Service"
msg_info "Backing up data"
mv /opt/barcodebuddy/ /opt/barcodebuddy-backup
msg_ok "Backed up data"
fetch_and_deploy_gh_release "barcodebuddy" "Forceu/barcodebuddy"
msg_info "Configuring ${APP}"
cp -r /opt/barcodebuddy-backup/data/. /opt/barcodebuddy/data
chown -R www-data:www-data /opt/barcodebuddy/data
msg_ok "Configured ${APP}"
msg_info "Starting Service"
systemctl start apache2
systemctl start barcodebuddy
msg_ok "Started Service"
msg_info "Cleaning up"
rm -r /opt/barcodebuddy-backup
msg_ok "Cleaned"
msg_ok "Updated successfully!"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-1024}"
var_disk="${var_disk:-8}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"

View File

@@ -20,41 +20,45 @@ color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/domain-monitor ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "domain-monitor" "Hosteroid/domain-monitor"; then
msg_info "Stopping Service"
systemctl stop apache2
msg_info "Service stopped"
msg_info "Creating backup"
mv /opt/domain-monitor/.env /opt
msg_ok "Created backup"
setup_composer
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "domain-monitor" "Hosteroid/domain-monitor" "prebuild" "latest" "/opt/domain-monitor" "domain-monitor-v*.zip"
msg_info "Updating Domain Monitor"
cd /opt/domain-monitor
$STD composer install
msg_ok "Updated Domain Monitor"
msg_info "Restoring backup"
mv /opt/.env /opt/domain-monitor
msg_ok "Restored backup"
msg_info "Restarting Services"
systemctl reload apache2
msg_ok "Restarted Services"
msg_ok "Updated successfully!"
fi
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/domain-monitor ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if ! grep -Fq "root /usr/bin/php /opt/domain-monitor/cron/check_domains.php" /etc/crontab; then
echo "0 0 * * * root /usr/bin/php /opt/domain-monitor/cron/check_domains.php" >>/etc/crontab
fi
if check_for_gh_release "domain-monitor" "Hosteroid/domain-monitor"; then
msg_info "Stopping Service"
systemctl stop apache2
msg_info "Service stopped"
msg_info "Creating backup"
mv /opt/domain-monitor/.env /opt
msg_ok "Created backup"
setup_composer
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "domain-monitor" "Hosteroid/domain-monitor" "prebuild" "latest" "/opt/domain-monitor" "domain-monitor-v*.zip"
msg_info "Updating Domain Monitor"
cd /opt/domain-monitor
$STD composer install
msg_ok "Updated Domain Monitor"
msg_info "Restoring backup"
mv /opt/.env /opt/domain-monitor
msg_ok "Restored backup"
msg_info "Restarting Services"
systemctl reload apache2
msg_ok "Restarted Services"
msg_ok "Updated successfully!"
fi
exit
}
start

View File

@@ -35,6 +35,7 @@ function update_script() {
"https://dl.evcc.io/public/evcc/stable/deb/debian/" \
"$(get_os_info codename)" \
"main"
fi
msg_info "Updating evcc LXC"
$STD apt update
$STD apt --only-upgrade install -y evcc

View File

@@ -1,70 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 tteck
# Author: tteck (tteckster) | Co-Author: Scorpoon
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/revenz/Fenrus
APP="Fenrus"
var_tags="${var_tags:-dashboard}"
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/${APP} ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_error "Currently we don't provide an update function for this ${APP}."
exit
msg_info "Updating ${APP}"
systemctl stop ${APP}
git clone https://github.com/revenz/Fenrus.git
cd Fenrus
gitVersionNumber=$(git rev-parse HEAD)
if [[ "${gitVersionNumber}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
mkdir /opt/fenrus-data-backup
cp -r "/opt/${APP}/data/" /opt/fenrus-data-backup/data
if [[ ! -d /opt/fenrus-data-backup/data ]]; then
msg_error "Backup of data folder failed! exiting..."
rm -r /opt/fenrus-data-backup/
exit
fi
export DOTNET_CLI_TELEMETRY_OPTOUT=1
dotnet publish -c Release -o "/opt/${APP}/" Fenrus.csproj
cp -r /opt/fenrus-data-backup/data/ "/opt/${APP}/"
echo "${gitVersionNumber}" >"/opt/${APP}_version.txt"
rm -r /opt/fenrus-data-backup/
msg_ok "Updated $APP"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already up to date"
fi
cd ..
rm -r Fenrus/
systemctl start ${APP}
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}:5000${CL}"

View File

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

View File

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

6
ct/headers/miniflux Normal file
View File

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

6
ct/headers/netvisor Normal file
View File

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

View File

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

55
ct/miniflux.sh Normal file
View File

@@ -0,0 +1,55 @@
#!/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: omernaveedxyz
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://miniflux.app/
APP="Miniflux"
var_tags="${var_tags:-media}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-8}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f /etc/systemd/system/miniflux.service ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Stopping Service"
$STD miniflux -flush-sessions -config-file /etc/miniflux.conf
systemctl stop miniflux
msg_ok "Service Stopped"
fetch_and_deploy_gh_release "miniflux" "miniflux/v2" "binary" "latest"
msg_info "Updating Miniflux"
$STD miniflux -migrate -config-file /etc/miniflux.conf
msg_ok "Updated Miniflux"
msg_info "Starting Service"
$STD systemctl start miniflux
msg_ok "Started Service"
msg_ok "Updated successfully"
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"

80
ct/netvisor.sh Normal file
View File

@@ -0,0 +1,80 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: vhsdream
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/maynayza/netvisor
APP="NetVisor"
var_tags="${var_tags:-analytics}"
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/netvisor ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "netvisor" "mayanayza/netvisor"; then
msg_info "Stopping services"
systemctl stop netvisor-daemon netvisor-server
msg_ok "Stopped services"
msg_info "Backing up configurations"
cp /opt/netvisor/.env /opt/netvisor.env
msg_ok "Backed up configurations"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "netvisor" "mayanayza/netvisor" "tarball" "latest" "/opt/netvisor"
TOOLCHAIN="$(grep "channel" /opt/netvisor/backend/rust-toolchain.toml | awk -F\" '{print $2}')"
RUST_TOOLCHAIN=$TOOLCHAIN setup_rust
mv /opt/netvisor.env /opt/netvisor/.env
msg_info "Creating frontend UI"
export PUBLIC_SERVER_HOSTNAME=default
export PUBLIC_SERVER_PORT=60072
cd /opt/netvisor/ui
$STD npm ci --no-fund --no-audit
$STD npm run build
msg_ok "Created frontend UI"
msg_info "Building Netvisor-server (patience)"
cd /opt/netvisor/backend
$STD cargo build --release --bin server
mv ./target/release/server /usr/bin/netvisor-server
msg_ok "Built Netvisor-server"
msg_info "Building Netvisor-daemon (amd64 version)"
$STD cargo build --release --bin daemon
cp ./target/release/daemon /usr/bin/netvisor-daemon
msg_ok "Built Netvisor-daemon (amd64 version)"
msg_info "Starting services"
systemctl start netvisor-server netvisor-daemon
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}:60072${CL}"

View File

@@ -34,12 +34,17 @@ function update_script() {
if grep -q "uv run" /etc/systemd/system/paperless-webserver.service; then
msg_info "Backing up data"
mkdir -p /opt/paperless_backup
cp -r /opt/paperless/data /opt/paperless_backup/
cp -r /opt/paperless/media /opt/paperless_backup/
cp -r /opt/paperless/paperless.conf /opt/paperless_backup/
msg_ok "Backup completed"
msg_info "Backing up user data and configuration"
local BACKUP_DIR="/tmp/paperless_backup_$$"
mkdir -p "$BACKUP_DIR"
for dir in /opt/paperless/*/; do
dir_name=$(basename "$dir")
if [[ ! "$dir_name" =~ ^(docker|docs|scripts|src|static)$ ]]; then
cp -r "/opt/paperless/$dir_name" "$BACKUP_DIR/" 2>/dev/null || true
fi
done
[[ -f /opt/paperless/paperless.conf ]] && cp /opt/paperless/paperless.conf "$BACKUP_DIR/"
msg_ok "Backup completed to $BACKUP_DIR"
PYTHON_VERSION="3.13" setup_uv
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "paperless" "paperless-ngx/paperless-ngx" "prebuild" "latest" "/opt/paperless" "paperless*tar.xz"
@@ -53,19 +58,14 @@ function update_script() {
fi
msg_info "Updating Paperless-ngx"
cp -r /opt/paperless_backup/* /opt/paperless/
CONSUME_DIR="$(sed -n 's/^PAPERLESS_CONSUMPTION_DIR=//p' /opt/paperless/paperless.conf)"
if [[ -z "$CONSUME_DIR" ]]; then
CONSUME_DIR="/opt/paperless/consume"
fi
mkdir -p "$CONSUME_DIR"
cp -r "$BACKUP_DIR"/* /opt/paperless/
cd /opt/paperless
$STD uv sync --all-extras
cd /opt/paperless/src
$STD uv run -- python manage.py migrate
msg_ok "Updated Paperless-ngx"
rm -rf /opt/paperless_backup
rm -rf "$BACKUP_DIR"
else
msg_warn "You are about to migrate your Paperless-ngx installation to uv!"
@@ -83,8 +83,20 @@ function update_script() {
rm -rf /opt/paperless/venv
find /opt/paperless -name "__pycache__" -type d -exec rm -rf {} +
msg_info "Backing up user data and configuration"
local BACKUP_DIR="/tmp/paperless_backup_$$"
mkdir -p "$BACKUP_DIR"
for dir in /opt/paperless/*/; do
dir_name=$(basename "$dir")
if [[ ! "$dir_name" =~ ^(docker|docs|scripts|src|static)$ ]]; then
cp -r "/opt/paperless/$dir_name" "$BACKUP_DIR/" 2>/dev/null || true
fi
done
[[ -f /opt/paperless/paperless.conf ]] && cp /opt/paperless/paperless.conf "$BACKUP_DIR/"
msg_ok "Backup completed to $BACKUP_DIR"
declare -A PATCHES=(
["paperless-consumer.service"]="ExecStart=uv run -- python manage.py document_consumer"
["paperless-scheduler.service"]="ExecStart=uv run -- celery --app paperless beat --loglevel INFO"
["paperless-task-queue.service"]="ExecStart=uv run -- celery --app paperless worker --loglevel INFO"
["paperless-webserver.service"]="ExecStart=uv run -- granian --interface asgi --ws \"paperless.asgi:application\""
@@ -109,12 +121,18 @@ function update_script() {
done
$STD systemctl daemon-reload
msg_info "Backing up data"
mkdir -p /opt/paperless_backup
cp -r /opt/paperless/data /opt/paperless_backup/
cp -r /opt/paperless/media /opt/paperless_backup/
cp -r /opt/paperless/paperless.conf /opt/paperless_backup/
msg_ok "Backup completed"
msg_info "Backing up user data and configuration"
BACKUP_DIR="/tmp/paperless_backup_$$"
mkdir -p "$BACKUP_DIR"
for dir in /opt/paperless/*/; do
dir_name=$(basename "$dir")
if [[ ! "$dir_name" =~ ^(docker|docs|scripts|src|static)$ ]]; then
cp -r "/opt/paperless/$dir_name" "$BACKUP_DIR/" 2>/dev/null || true
fi
done
[[ -f /opt/paperless/paperless.conf ]] && cp /opt/paperless/paperless.conf "$BACKUP_DIR/"
msg_ok "Backup completed to $BACKUP_DIR"
PYTHON_VERSION="3.13" setup_uv
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "paperless" "paperless-ngx/paperless-ngx" "prebuild" "latest" "/opt/paperless" "paperless*tar.xz"
@@ -130,16 +148,14 @@ function update_script() {
fi
msg_info "Updating Paperless-ngx"
cp -r /opt/paperless_backup/* /opt/paperless/
CONSUME_DIR="$(sed -n '/^PAPERLESS_CONSUMPTION/s/[^=]=*//p' /opt/paperless/paperless.conf)"
mkdir -p "${CONSUME_DIR:-/opt/paperless/consume}"
cp -r "$BACKUP_DIR"/* /opt/paperless/
cd /opt/paperless
$STD uv sync --all-extras
cd /opt/paperless/src
$STD uv run -- python manage.py migrate
msg_ok "Paperless-ngx migration and update completed"
rm -rf /opt/paperless_backup
rm -rf "$BACKUP_DIR"
if [[ -d /opt/paperless/backup ]]; then
rm -rf /opt/paperless/backup
msg_ok "Removed old backup directory"

View File

@@ -6,7 +6,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
# Source: https://github.com/Brandawg93/PeaNUT/
APP="PeaNUT"
var_tags="${var_tags:-network;ups;}"
var_tags="${var_tags:-network;ups}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-7}"
@@ -35,7 +35,7 @@ function update_script() {
systemctl stop peanut
msg_info "Stopped Service"
fetch_and_deploy_gh_release "peanut" "Brandawg93/PeaNUT" "tarball" "latest" "/opt/peanut"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "peanut" "Brandawg93/PeaNUT" "tarball" "latest" "/opt/peanut"
msg_info "Updating $APP"
cd /opt/peanut

41
ct/splunk-enterprise.sh Normal file
View File

@@ -0,0 +1,41 @@
#!/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: rcastley
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://www.splunk.com/en_us/download.html
APP="Splunk-Enterprise"
var_tags="${var_tags:-monitoring}"
var_cpu="${var_cpu:-4}"
var_ram="${var_ram:-8192}"
var_disk="${var_disk:-40}"
var_os="${var_os:-ubuntu}"
var_version="${var_version:-24.04}"
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/splunk ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_error "Currently we don't provide an update function for this ${APP}."
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 the Splunk Enterprise Web interface using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8000${CL}"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-20}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"

View File

@@ -35,14 +35,15 @@ function update_script() {
systemctl stop tududi
msg_ok "Stopped Service"
msg_info "Remove and backup Files"
DB="$(sed -n '/^DB_FILE/s/[^=]*=//p' /opt/tududi/backend/.env)"
export DB_FILE="$DB"
cp /opt/tududi/backend/.env /opt/tududi.env
rm -rf /opt/tududi/backend/dist
msg_ok "Backup and removed Files"
msg_info "Backing up env file"
if [[ -f /opt/tududi/backend/.env ]]; then
cp /opt/tududi/backend/.env /opt/tududi.env
else
cp /opt/tududi/.env /opt/tududi.env
fi
msg_ok "Backed up env file"
fetch_and_deploy_gh_release "tududi" "chrisvel/tududi" "tarball" "latest" "/opt/tududi"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "tududi" "chrisvel/tududi" "tarball" "latest" "/opt/tududi"
msg_info "Updating Tududi"
cd /opt/tududi
@@ -50,9 +51,9 @@ function update_script() {
export NODE_ENV=production
$STD npm run frontend:build
mv ./dist ./backend
mv ./public/locales ./backend/dist
mv ./public/favicon.* ./backend/dist
mv /opt/tududi.env /opt/tududi/.env
mv /opt/tududi.env /opt/tududi/backend/.env
DB="$(sed -n '/^DB_FILE/s/[^=]*=//p' /opt/tududi/backend/.env)"
export DB_FILE="$DB"
sed -i -e 's|/tududi$|/tududi/backend|' \
-e 's|npm run start|bash /opt/tududi/backend/cmd/start.sh|' \
/etc/systemd/system/tududi.service

View File

@@ -1,40 +0,0 @@
{
"name": "Barcode Buddy",
"slug": "barcode-buddy",
"categories": [
24
],
"date_created": "2025-02-08",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 80,
"documentation": "https://barcodebuddy-documentation.readthedocs.io/en/latest/",
"website": "https://github.com/Forceu/barcodebuddy",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/barcode-buddy.webp",
"config_path": "/opt/barcodebuddy/data/config.php",
"description": "Barcode Buddy for Grocy is an extension for Grocy, allowing to pass barcodes to Grocy. It supports barcodes for products and chores. If you own a physical barcode scanner, it can be integrated, so that all barcodes scanned are automatically pushed to BarcodeBuddy/Grocy.",
"install_methods": [
{
"type": "default",
"script": "ct/barcode-buddy.sh",
"resources": {
"cpu": 1,
"ram": 512,
"hdd": 3,
"os": "debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "After install enable the option \"Use Redis cache\" on the settings page.",
"type": "info"
}
]
}

View File

@@ -1,35 +0,0 @@
{
"name": "Fenrus",
"slug": "fenrus",
"categories": [
10
],
"date_created": "2024-05-05",
"type": "ct",
"updateable": false,
"privileged": false,
"interface_port": 5000,
"documentation": "https://github.com/revenz/Fenrus/wiki",
"website": "https://github.com/revenz/Fenrus",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/fenrus.webp",
"config_path": "",
"description": "A personal home page for quick access to all your personal apps/sites.",
"install_methods": [
{
"type": "default",
"script": "ct/fenrus.sh",
"resources": {
"cpu": 1,
"ram": 512,
"hdd": 4,
"os": "debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

View File

@@ -0,0 +1,40 @@
{
"name": "Miniflux",
"slug": "miniflux",
"categories": [
13
],
"date_created": "2025-11-12",
"type": "ct",
"updateable": true,
"privileged": false,
"config_path": "/etc/miniflux.conf",
"interface_port": 8080,
"documentation": "https://miniflux.app/docs/index.html",
"website": "https://miniflux.app/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/miniflux-light.webp",
"description": "Miniflux is a minimalist and opinionated feed reader.",
"install_methods": [
{
"type": "default",
"script": "ct/miniflux.sh",
"resources": {
"cpu": 2,
"ram": 2048,
"hdd": 8,
"os": "Debian",
"version": "13"
}
}
],
"default_credentials": {
"username": "admin",
"password": "randomly generated during installation process"
},
"notes": [
{
"text": "Admin password available as `ADMIN_PASSWORD` in `~/miniflux.creds`",
"type": "info"
}
]
}

View File

@@ -0,0 +1,40 @@
{
"name": "NetVisor",
"slug": "netvisor",
"categories": [
9
],
"date_created": "2025-11-13",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 60072,
"documentation": "https://github.com/mayanayza/netvisor",
"config_path": "/opt/netvisor/.env",
"website": "https://github.com/mayanayza/netvisor",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/png/netvisor.png",
"description": "Automatically discover and visually document network infrastructure",
"install_methods": [
{
"type": "default",
"script": "ct/netvisor.sh",
"resources": {
"cpu": 2,
"ram": 2048,
"hdd": 6,
"os": "Debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "The integrated daemon config is located at `/root/.config/daemon/config.json`",
"type": "info"
}
]
}

View File

@@ -0,0 +1,48 @@
{
"name": "Splunk Enterprise",
"slug": "splunk-enterprise",
"categories": [
9
],
"date_created": "2025-11-12",
"type": "ct",
"updateable": false,
"privileged": false,
"interface_port": 8000,
"documentation": "https://help.splunk.com",
"config_path": "",
"website": "https://www.splunk.com/en_us/download/splunk-enterprise.html",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/splunk.webp",
"description": "Platform for searching, monitoring, and analyzing machine-generated data at scale for operational intelligence and security.",
"install_methods": [
{
"type": "default",
"script": "ct/splunk-enterprise.sh",
"resources": {
"cpu": 4,
"ram": 8192,
"hdd": 40,
"os": "Ubuntu",
"version": "24.04"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "The credentials to login can be found in splunk.creds.",
"type": "info"
},
{
"text": "Trial license allows indexing 500 MB/Day. After 60 days you can convert to a perpetual free license or purchase a Splunk Enterprise license to continue using the expanded functionality designed for enterprise-scale deployments.",
"type": "warning"
},
{
"text": "About Splunk Free License: https://help.splunk.com/en/splunk-enterprise/administer/admin-manual/10.0/configure-splunk-licenses/about-splunk-free",
"type": "info"
}
]
}

View File

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

View File

@@ -1,4 +1,199 @@
[
{
"name": "rcourtman/Pulse",
"version": "v4.31.0",
"date": "2025-11-13T23:45:23Z"
},
{
"name": "chrisbenincasa/tunarr",
"version": "v0.22.14",
"date": "2025-11-13T23:16:04Z"
},
{
"name": "ollama/ollama",
"version": "v0.12.11",
"date": "2025-11-12T20:27:51Z"
},
{
"name": "gristlabs/grist-core",
"version": "v1.7.7",
"date": "2025-11-13T21:28:44Z"
},
{
"name": "0xERR0R/blocky",
"version": "v0.28.1",
"date": "2025-11-13T21:25:32Z"
},
{
"name": "pommee/goaway",
"version": "v0.62.18",
"date": "2025-11-13T19:49:21Z"
},
{
"name": "BerriAI/litellm",
"version": "v1.79.1-stable-patch-1",
"date": "2025-11-13T17:47:31Z"
},
{
"name": "fuma-nama/fumadocs",
"version": "fumadocs-openapi@10.0.6",
"date": "2025-11-13T16:37:11Z"
},
{
"name": "traefik/traefik",
"version": "v3.6.1",
"date": "2025-11-13T14:28:54Z"
},
{
"name": "emqx/emqx",
"version": "e5.9.2",
"date": "2025-11-13T14:24:59Z"
},
{
"name": "pocketbase/pocketbase",
"version": "v0.33.0",
"date": "2025-11-13T14:09:14Z"
},
{
"name": "PrivateBin/PrivateBin",
"version": "1.7.9",
"date": "2025-11-13T10:26:37Z"
},
{
"name": "nzbgetcom/nzbget",
"version": "v25.4",
"date": "2025-10-09T10:27:01Z"
},
{
"name": "meilisearch/meilisearch",
"version": "prototype-v1.25.0.improve-s3-multipart-upload-1",
"date": "2025-11-13T09:25:48Z"
},
{
"name": "docker/compose",
"version": "v2.40.3",
"date": "2025-10-30T09:35:37Z"
},
{
"name": "redis/redis",
"version": "8.4-int2",
"date": "2025-11-13T08:17:31Z"
},
{
"name": "evcc-io/evcc",
"version": "0.209.8",
"date": "2025-11-13T07:20:49Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.24.301",
"date": "2025-11-13T05:56:54Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "v6.4.8",
"date": "2025-11-13T04:42:27Z"
},
{
"name": "esphome/esphome",
"version": "2025.10.5",
"date": "2025-11-12T01:09:44Z"
},
{
"name": "jeedom/core",
"version": "4.4.20",
"date": "2025-11-13T00:27:05Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v4.0.1",
"date": "2025-10-15T16:53:55Z"
},
{
"name": "documenso/documenso",
"version": "v2.0.11",
"date": "2025-11-12T23:56:58Z"
},
{
"name": "keycloak/keycloak",
"version": "26.4.5",
"date": "2025-11-12T15:24:23Z"
},
{
"name": "henrygd/beszel",
"version": "v0.16.0",
"date": "2025-11-12T21:33:36Z"
},
{
"name": "NginxProxyManager/nginx-proxy-manager",
"version": "v2.13.4",
"date": "2025-11-12T21:27:04Z"
},
{
"name": "wazuh/wazuh",
"version": "v4.14.1",
"date": "2025-11-12T18:11:43Z"
},
{
"name": "pymedusa/Medusa",
"version": "v1.0.25",
"date": "2025-11-12T16:57:54Z"
},
{
"name": "zitadel/zitadel",
"version": "v4.6.6",
"date": "2025-11-12T13:09:12Z"
},
{
"name": "kimai/kimai",
"version": "2.42.0",
"date": "2025-11-12T15:16:54Z"
},
{
"name": "zwave-js/zwave-js-ui",
"version": "v11.7.0",
"date": "2025-11-12T14:09:36Z"
},
{
"name": "jenkinsci/jenkins",
"version": "jenkins-2.528.2",
"date": "2025-11-12T13:18:13Z"
},
{
"name": "dgtlmoon/changedetection.io",
"version": "0.50.43",
"date": "2025-11-12T12:03:21Z"
},
{
"name": "cockpit-project/cockpit",
"version": "351",
"date": "2025-11-12T11:28:06Z"
},
{
"name": "Paymenter/Paymenter",
"version": "v1.4.4",
"date": "2025-11-12T10:43:23Z"
},
{
"name": "SigNoz/signoz",
"version": "v0.101.0",
"date": "2025-11-12T07:13:22Z"
},
{
"name": "morpheus65535/bazarr",
"version": "v1.5.3",
"date": "2025-09-20T12:12:33Z"
},
{
"name": "webmin/webmin",
"version": "2.600",
"date": "2025-11-12T05:01:55Z"
},
{
"name": "hyperion-project/hyperion.ng",
"version": "2.1.1",
"date": "2025-06-14T17:45:06Z"
},
{
"name": "moghtech/komodo",
"version": "v1.19.5",
@@ -9,16 +204,6 @@
"version": "v5.17.0",
"date": "2025-11-11T20:15:54Z"
},
{
"name": "BerriAI/litellm",
"version": "v1.79.dev.1",
"date": "2025-11-11T20:13:32Z"
},
{
"name": "rcourtman/Pulse",
"version": "v4.29.0",
"date": "2025-11-11T19:45:56Z"
},
{
"name": "juanfont/headscale",
"version": "v0.27.1",
@@ -44,21 +229,11 @@
"version": "mattermost-redux@11.1.0",
"date": "2025-11-11T17:15:00Z"
},
{
"name": "jenkinsci/jenkins",
"version": "jenkins-2.536",
"date": "2025-11-11T17:03:28Z"
},
{
"name": "msgbyte/tianji",
"version": "v1.30.10",
"date": "2025-11-11T16:26:27Z"
},
{
"name": "kimai/kimai",
"version": "2.41.0",
"date": "2025-11-11T15:17:21Z"
},
{
"name": "netbox-community/netbox",
"version": "v4.4.6",
@@ -74,11 +249,6 @@
"version": "1.1.0",
"date": "2025-11-11T14:30:28Z"
},
{
"name": "fuma-nama/fumadocs",
"version": "create-fumadocs-app@16.0.13",
"date": "2025-11-11T14:04:06Z"
},
{
"name": "openobserve/openobserve",
"version": "v0.16.1",
@@ -99,36 +269,11 @@
"version": "n8n@1.119.1",
"date": "2025-11-10T14:21:10Z"
},
{
"name": "zitadel/zitadel",
"version": "v4.6.5",
"date": "2025-11-11T09:55:47Z"
},
{
"name": "emqx/emqx",
"version": "e6.0.1",
"date": "2025-11-11T09:46:06Z"
},
{
"name": "NginxProxyManager/nginx-proxy-manager",
"version": "v2.13.3",
"date": "2025-11-11T07:36:54Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.24.275",
"date": "2025-11-11T05:56:40Z"
},
{
"name": "FlareSolverr/FlareSolverr",
"version": "v3.4.5",
"date": "2025-11-11T01:58:31Z"
},
{
"name": "chrisbenincasa/tunarr",
"version": "v0.23.0-alpha.22",
"date": "2025-11-11T01:36:48Z"
},
{
"name": "MediaBrowser/Emby.Releases",
"version": "4.9.1.90",
@@ -139,16 +284,6 @@
"version": "2025.11.11",
"date": "2025-11-11T00:35:03Z"
},
{
"name": "jeedom/core",
"version": "4.4.20",
"date": "2025-11-11T00:27:07Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v4.0.1",
"date": "2025-10-15T16:53:55Z"
},
{
"name": "qbittorrent/qBittorrent",
"version": "release-5.1.3",
@@ -164,56 +299,21 @@
"version": "v0.86",
"date": "2025-11-10T20:54:25Z"
},
{
"name": "pommee/goaway",
"version": "v0.62.17",
"date": "2025-11-10T19:45:49Z"
},
{
"name": "autobrr/autobrr",
"version": "v1.69.0",
"date": "2025-11-10T17:22:00Z"
},
{
"name": "meilisearch/meilisearch",
"version": "latest",
"date": "2025-11-10T17:01:21Z"
},
{
"name": "gtsteffaniak/filebrowser",
"version": "v1.0.1-stable",
"date": "2025-11-10T16:51:44Z"
},
{
"name": "keycloak/keycloak",
"version": "26.4.4",
"date": "2025-11-07T08:55:27Z"
},
{
"name": "grokability/snipe-it",
"version": "v8.3.5",
"date": "2025-11-10T14:12:12Z"
},
{
"name": "SigNoz/signoz",
"version": "v0.101.0-rc.1",
"date": "2025-11-10T13:08:55Z"
},
{
"name": "dgtlmoon/changedetection.io",
"version": "0.50.42",
"date": "2025-11-10T12:32:49Z"
},
{
"name": "documenso/documenso",
"version": "v2.0.6",
"date": "2025-11-10T08:08:43Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "v6.4.6",
"date": "2025-11-08T22:45:35Z"
},
{
"name": "navidrome/navidrome",
"version": "v0.58.5",
@@ -294,11 +394,6 @@
"version": "v7.13.0",
"date": "2025-11-08T13:36:25Z"
},
{
"name": "pocketbase/pocketbase",
"version": "v0.32.0",
"date": "2025-11-08T09:36:27Z"
},
{
"name": "home-assistant/core",
"version": "2025.11.1",
@@ -319,31 +414,11 @@
"version": "2025.11.1",
"date": "2025-11-07T17:05:45Z"
},
{
"name": "traefik/traefik",
"version": "v3.6.0",
"date": "2025-11-07T15:34:35Z"
},
{
"name": "YunoHost/yunohost",
"version": "debian/12.1.35",
"date": "2025-11-07T14:35:24Z"
},
{
"name": "nzbgetcom/nzbget",
"version": "v25.4",
"date": "2025-10-09T10:27:01Z"
},
{
"name": "Paymenter/Paymenter",
"version": "v1.4.3",
"date": "2025-11-07T11:07:17Z"
},
{
"name": "wazuh/wazuh",
"version": "coverity-w46-4.14.1",
"date": "2025-11-07T08:46:03Z"
},
{
"name": "umami-software/umami",
"version": "v3.0.0",
@@ -409,11 +484,6 @@
"version": "v0.9.1",
"date": "2025-11-06T02:26:53Z"
},
{
"name": "ollama/ollama",
"version": "v0.12.10",
"date": "2025-11-05T21:41:21Z"
},
{
"name": "neo4j/neo4j",
"version": "5.26.16",
@@ -464,11 +534,6 @@
"version": "v4.4.1",
"date": "2025-11-05T09:08:23Z"
},
{
"name": "evcc-io/evcc",
"version": "0.209.7",
"date": "2025-11-05T08:32:08Z"
},
{
"name": "slskd/slskd",
"version": "0.24.0",
@@ -479,11 +544,6 @@
"version": "v4.0.16.2944",
"date": "2025-11-05T01:56:48Z"
},
{
"name": "henrygd/beszel",
"version": "v0.15.4",
"date": "2025-11-04T22:34:12Z"
},
{
"name": "go-gitea/gitea",
"version": "v1.25.1",
@@ -524,26 +584,11 @@
"version": "v2.0.11",
"date": "2025-11-04T08:51:05Z"
},
{
"name": "redis/redis",
"version": "8.4-rc1-int2",
"date": "2025-11-03T09:00:38Z"
},
{
"name": "clusterzx/paperless-ai",
"version": "v3.0.9",
"date": "2025-11-04T07:28:45Z"
},
{
"name": "esphome/esphome",
"version": "2025.10.4",
"date": "2025-11-04T03:04:13Z"
},
{
"name": "hyperion-project/hyperion.ng",
"version": "2.1.1",
"date": "2025-06-14T17:45:06Z"
},
{
"name": "actualbudget/actual",
"version": "v25.11.0",
@@ -614,11 +659,6 @@
"version": "7.4.5",
"date": "2025-10-31T14:39:13Z"
},
{
"name": "gristlabs/grist-core",
"version": "v1.7.5",
"date": "2025-10-31T13:42:36Z"
},
{
"name": "plankanban/planka",
"version": "planka-1.1.1",
@@ -629,11 +669,6 @@
"version": "v1.10.1",
"date": "2025-10-31T08:25:57Z"
},
{
"name": "pymedusa/Medusa",
"version": "v1.0.24",
"date": "2025-10-30T19:04:42Z"
},
{
"name": "mongodb/mongo",
"version": "r7.0.26",
@@ -659,21 +694,11 @@
"version": "v5.4",
"date": "2025-10-30T14:25:23Z"
},
{
"name": "docker/compose",
"version": "v2.40.3",
"date": "2025-10-30T09:35:37Z"
},
{
"name": "prometheus/prometheus",
"version": "v0.307.3",
"date": "2025-10-30T08:13:40Z"
},
{
"name": "morpheus65535/bazarr",
"version": "v1.5.3",
"date": "2025-09-20T12:12:33Z"
},
{
"name": "ipfs/kubo",
"version": "v0.38.2",
@@ -689,21 +714,11 @@
"version": "v2.7.12",
"date": "2025-05-29T17:08:26Z"
},
{
"name": "zwave-js/zwave-js-ui",
"version": "v11.6.1",
"date": "2025-10-29T16:51:06Z"
},
{
"name": "laurent22/joplin",
"version": "server-v3.4.4",
"date": "2025-09-25T13:19:26Z"
},
{
"name": "cockpit-project/cockpit",
"version": "350",
"date": "2025-10-29T09:51:00Z"
},
{
"name": "apache/cassandra",
"version": "cassandra-5.0.6",
@@ -724,11 +739,6 @@
"version": "v6.2.2",
"date": "2025-10-28T17:07:47Z"
},
{
"name": "PrivateBin/PrivateBin",
"version": "2.0.2",
"date": "2025-10-28T15:51:35Z"
},
{
"name": "librespeed/speedtest-rust",
"version": "v1.4.0",
@@ -949,11 +959,6 @@
"version": "v0.10.4",
"date": "2025-10-11T19:53:39Z"
},
{
"name": "0xERR0R/blocky",
"version": "v0.27.0",
"date": "2025-10-10T20:11:48Z"
},
{
"name": "projectsend/projectsend",
"version": "r1945",
@@ -994,11 +999,6 @@
"version": "v1.5.9",
"date": "2025-10-06T08:34:01Z"
},
{
"name": "webmin/webmin",
"version": "2.520",
"date": "2025-10-05T00:51:34Z"
},
{
"name": "WordPress/WordPress",
"version": "4.7.31",

View File

@@ -1,73 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: bvdberg01
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/Forceu/barcodebuddy
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 \
redis \
sqlite3
msg_ok "Installed Dependencies"
PHP_VERSION="8.2" PHP_APACHE="YES" PHP_MODULE="redis, sqlite3" setup_php
fetch_and_deploy_gh_release "barcodebuddy" "Forceu/barcodebuddy"
msg_info "Configuring barcodebuddy"
chown -R www-data:www-data /opt/barcodebuddy/data
msg_ok "Configured barcodebuddy"
msg_info "Creating Services"
cat <<EOF >/etc/systemd/system/barcodebuddy.service
[Unit]
Description=Run websocket server for barcodebuddy screen feature
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/php /opt/barcodebuddy/wsserver.php
StandardOutput=null
Restart=on-failure
User=www-data
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF >/etc/apache2/sites-available/barcodebuddy.conf
<VirtualHost *:80>
ServerName barcodebuddy
DocumentRoot /opt/barcodebuddy
<Directory /opt/barcodebuddy>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/apache2/barcodebuddy_error.log
CustomLog /var/log/apache2/barcodebuddy_access.log combined
</VirtualHost>
EOF
systemctl enable -q --now barcodebuddy
$STD a2ensite barcodebuddy
$STD a2enmod rewrite
$STD a2dissite 000-default.conf
$STD systemctl reload apache2
msg_ok "Created Services"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -43,6 +43,7 @@ sed -i -e "s|^APP_ENV=.*|APP_ENV=production|" \
-e "s|^DB_USERNAME=.*|DB_USERNAME=$MARIADB_DB_USER|" \
-e "s|^DB_PASSWORD=.*|DB_PASSWORD=$MARIADB_DB_PASS|" \
-e "s|^DB_DATABASE=.*|DB_DATABASE=$MARIADB_DB_NAME|" .env
echo "0 0 * * * root /usr/bin/php /opt/domain-monitor/cron/check_domains.php" >>/etc/crontab
cat <<EOF >/etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80>

View File

@@ -1,62 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 tteck
# Author: tteck (tteckster)
# Co-Author: Scorpoon
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/revenz/Fenrus
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt-get install -y git
msg_ok "Installed Dependencies"
msg_info "Installing ASP.NET Core 7 SDK"
var_os=$(grep "^ID=" /etc/os-release | cut -d'=' -f2 | tr -d '"')
var_version=$(grep "^VERSION_ID=" /etc/os-release | cut -d'=' -f2 | tr -d '"')
if [ "${var_os}" = "debian" ]; then
curl -fsSL "https://packages.microsoft.com/config/debian/$var_version/packages-microsoft-prod.deb" -o "packages-microsoft-prod.deb"
$STD dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
fi
$STD apt-get update
$STD apt-get install -y dotnet-sdk-7.0
msg_ok "Installed ASP.NET Core 7 SDK"
msg_info "Installing ${APPLICATION}"
git clone -q https://github.com/revenz/Fenrus.git /opt/${APPLICATION}
cd /opt/${APPLICATION}
$STD dotnet publish -c Release -o "/opt/${APPLICATION}/" Fenrus.csproj
msg_ok "Installed ${APPLICATION}"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/"${APPLICATION}".service
[Unit]
Description=${APPLICATION}
[Service]
WorkingDirectory=/opt/${APPLICATION}
ExecStart=/usr/bin/dotnet Fenrus.dll --urls=http://*:5000
SyslogIdentifier=${APPLICATION}
User=root
[Install]
WantedBy=multi-user.target
EOF
$STD systemctl enable -q --now ${APPLICATION}
msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -49,7 +49,7 @@ echo "export COMPOSER_ALLOW_SUPERUSER=1" >>~/.bashrc
source ~/.bashrc
$STD composer install --no-dev --optimize-autoloader --no-interaction
cp .env.dist .env
sed -i "/^DATABASE_URL=/c\DATABASE_URL=mysql://$DB_USER:$DB_PASS@127.0.0.1:3306/$DB_NAME?charset=utf8mb4&serverVersion=$MYSQL_VERSION" /opt/kimai/.env
sed -i "/^DATABASE_URL=/c\DATABASE_URL=mysql://$DB_USER:$DB_PASS@127.0.0.1:3306/$DB_NAME?charset=utf8mb4&serverVersion=mariadb-$MYSQL_VERSION" /opt/kimai/.env
$STD bin/console kimai:install -n
$STD expect <<EOF
set timeout -1

View File

@@ -0,0 +1,41 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: omernaveedxyz
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://miniflux.app/
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
PG_VERSION=17 setup_postgresql
PG_DB_NAME="miniflux_db" PG_DB_USER="miniflux" PG_DB_GRANT_SUPERUSER="true" setup_postgresql_db
fetch_and_deploy_gh_release "miniflux" "miniflux/v2" "binary" "latest"
msg_info "Configuring Miniflux"
ADMIN_NAME=admin
ADMIN_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)"
cat <<EOF >/etc/miniflux.conf
# See https://miniflux.app/docs/configuration.html
DATABASE_URL=user=$PG_DB_USER password=$PG_DB_PASS dbname=$PG_DB_NAME sslmode=disable
CREATE_ADMIN=1
ADMIN_USERNAME=$ADMIN_NAME
ADMIN_PASSWORD=$ADMIN_PASS
LISTEN_ADDR=0.0.0.0:8080
EOF
{
echo "ADMIN_USERNAME: $ADMIN_NAME"
echo "ADMIN_PASSWORD: $ADMIN_PASS"
} >>~/miniflux.creds
$STD miniflux -migrate -config-file /etc/miniflux.conf
systemctl enable -q --now miniflux
msg_ok "Configured Miniflux"
motd_ssh
customize
cleanup_lxc

127
install/netvisor-install.sh Normal file
View File

@@ -0,0 +1,127 @@
#!/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/mayanayza/netvisor
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 \
build-essential
msg_ok "Installed Dependencies"
PG_VERSION=17 setup_postgresql
NODE_VERSION="24" setup_nodejs
PG_DB_NAME="netvisor_db" PG_DB_USER="netvisor" PG_DB_GRANT_SUPERUSER="true" setup_postgresql_db
fetch_and_deploy_gh_release "netvisor" "mayanayza/netvisor" "tarball" "latest" "/opt/netvisor"
TOOLCHAIN="$(grep "channel" /opt/netvisor/backend/rust-toolchain.toml | awk -F\" '{print $2}')"
RUST_TOOLCHAIN=$TOOLCHAIN setup_rust
msg_info "Creating frontend UI"
export PUBLIC_SERVER_HOSTNAME=default
export PUBLIC_SERVER_PORT=60072
cd /opt/netvisor/ui
$STD npm ci --no-fund --no-audit
$STD npm run build
msg_ok "Created frontend UI"
msg_info "Building Netvisor-server (patience)"
cd /opt/netvisor/backend
$STD cargo build --release --bin server
mv ./target/release/server /usr/bin/netvisor-server
msg_ok "Built Netvisor-server"
msg_info "Building Netvisor-daemon"
$STD cargo build --release --bin daemon
cp ./target/release/daemon /usr/bin/netvisor-daemon
msg_ok "Built Netvisor-daemon"
msg_info "Configuring server & daemon for first-run"
cat <<EOF >/opt/netvisor/.env
### - UI
PUBLIC_SERVER_HOSTNAME=default
PUBLIC_SERVER_PORT=60072
### - SERVER
NETVISOR_DATABASE_URL=postgresql://$PG_DB_USER:$PG_DB_PASS@localhost:5432/$PG_DB_NAME
NETVISOR_WEB_EXTERNAL_PATH="/opt/netvisor/ui/build"
NETVISOR_SERVER_PORT=60072
NETVISOR_LOG_LEVEL=info
NETVISOR_INTEGRATED_DAEMON_URL=http://127.0.0.1:60073
## - uncomment to disable signups
# NETVISOR_DISABLE_REGISTRATION=true
## - uncomment when behind reverse proxy
# NETVISOR_USE_SECURE_SESSION_COOKIES=true
### - OIDC (optional)
# NETVISOR_OIDC_ISSUER_URL=
# NETVISOR_OIDC_CLIENT_ID=
# NETVISOR_OIDC_CLIENT_SECRET=
# NETVISOR_OIDC_PROVIDER_NAME=
# NETVISOR_OIDC_REDIRECT_URL=
## - Callback URL for reference
# http://your-netvisor-domain:60072/api/auth/oidc/callback
### - INTEGRATED DAEMON
NETVISOR_SERVER_TARGET=127.0.0.1
NETVISOR_BIND_ADDRESS=0.0.0.0
NETVISOR_NAME="netvisor-daemon"
NETVISOR_HEARTBEAT_INTERVAL=30
EOF
cat <<EOF >/etc/systemd/system/netvisor-server.service
[Unit]
Description=NetVisor Network Discovery Server
After=network.target postgresql.service
[Service]
Type=simple
EnvironmentFile=/opt/netvisor/.env
ExecStart=/usr/bin/netvisor-server
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now netvisor-server
sleep 5
NETWORK_ID="$(sudo -u postgres psql -1 -t -d $PG_DB_NAME -c 'SELECT id FROM networks;')"
API_KEY="$(sudo -u postgres psql -1 -t -d $PG_DB_NAME -c 'SELECT key from api_keys;')"
cat <<EOF >/etc/systemd/system/netvisor-daemon.service
[Unit]
Description=NetVisor Network Discovery Daemon
After=network.target netvisor-server.service
[Service]
Type=simple
EnvironmentFile=/opt/netvisor/.env
ExecStart=/usr/bin/netvisor-daemon --server-target http://127.0.0.1 --server-port 60072 --network-id ${NETWORK_ID} --daemon-api-key ${API_KEY}
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now netvisor-daemon
msg_ok "Netvisor server & daemon configured and running"
motd_ssh
customize
cleanup_lxc

View File

@@ -0,0 +1,79 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: rcastley
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://www.splunk.com/en_us/download.html
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
echo -e "${TAB3}┌─────────────────────────────────────────────────────────────────────────┐"
echo -e "${TAB3}│ SPLUNK GENERAL TERMS │"
echo -e "${TAB3}└─────────────────────────────────────────────────────────────────────────┘"
echo ""
echo -e "${TAB3}Before proceeding with the Splunk Enterprise installation, you must"
echo -e "${TAB3}review and accept the Splunk General Terms."
echo ""
echo -e "${TAB3}Please review the terms at:"
echo -e "${TAB3}${GATEWAY}${BGN}https://www.splunk.com/en_us/legal/splunk-general-terms.html${CL}"
echo ""
while true; do
echo -e "${TAB3}Do you accept the Splunk General Terms? (y/N): \c"
read -r response
case $response in
[Yy]|[Yy][Ee][Ss])
msg_ok "Terms accepted. Proceeding with installation..."
break
;;
[Nn]|[Nn][Oo]|"")
msg_error "Terms not accepted. Installation cannot proceed."
msg_error "Please review the terms and run the script again if you wish to proceed."
exit 1
;;
*)
msg_error "Invalid response. Please enter 'y' for yes or 'n' for no."
;;
esac
done
msg_info "Setup Splunk Enterprise"
DOWNLOAD_URL=$(curl -s "https://www.splunk.com/en_us/download/splunk-enterprise.html" | grep -o 'data-link="[^"]*' | sed 's/data-link="//' | grep "https.*products/splunk/releases" | grep "\.deb$")
RELEASE=$(echo "$DOWNLOAD_URL" | sed 's|.*/releases/\([^/]*\)/.*|\1|')
$STD curl -fsSL -o "splunk-enterprise.deb" "$DOWNLOAD_URL" || {
msg_error "Failed to download Splunk Enterprise from the provided link."
exit 1
}
$STD dpkg -i "splunk-enterprise.deb"
rm -f "splunk-enterprise.deb"
msg_ok "Setup Splunk Enterprise v${RELEASE}"
msg_info "Creating Splunk admin user"
ADMIN_USER="admin"
ADMIN_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
{
echo "Splunk-Credentials"
echo "Username: $ADMIN_USER"
echo "Password: $ADMIN_PASS"
} >> ~/splunk.creds
cat > "/opt/splunk/etc/system/local/user-seed.conf" << EOF
[user_info]
USERNAME = $ADMIN_USER
PASSWORD = $ADMIN_PASS
EOF
msg_ok "Created Splunk admin user"
msg_info "Starting Service"
$STD /opt/splunk/bin/splunk start --accept-license --answer-yes --no-prompt
$STD /opt/splunk/bin/splunk enable boot-start
msg_ok "Started Service"
motd_ssh
customize
cleanup_lxc

View File

@@ -27,9 +27,4 @@ bash <(curl -sL s5n.sh)
motd_ssh
customize
msg_info "Cleaning up"
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"
cleanup_lxc

View File

@@ -28,8 +28,6 @@ $STD npm install
export NODE_ENV=production
$STD npm run frontend:build
mv ./dist ./backend
mv ./public/locales ./backend/dist
mv ./public/favicon.* ./backend/dist
msg_ok "Configured Tududi"
msg_info "Creating env and database"
@@ -37,15 +35,16 @@ DB_LOCATION="/opt/tududi-db"
UPLOAD_DIR="/opt/tududi-uploads"
mkdir -p {"$DB_LOCATION","$UPLOAD_DIR"}
SECRET="$(openssl rand -hex 64)"
cat <<EOF >/opt/tududi/backend/.env
TUDUDI_SESSION_SECRET=${SECRET}
TUDUDI_ALLOWED_ORIGINS=<your tududi IP or FQDN>
NODE_ENV=production
DB_FILE=${DB_LOCATION}/production.sqlite3
TUDUDI_UPLOAD_PATH=${UPLOAD_DIR}
DISABLE_TELEGRAM=true
DIABLE_SCHEDULER=false
EOF
sed -e '/^NODE_ENV=/s/=.*$/=production/' \
-e 's/^TUDUDI_USER/# TUDUDI_USER/g' \
-e "/_SECRET=/s/=.*$/=${SECRET}/" \
-e "/^# DB_FILE/s/^# //; \
\|DB_FILE|s|/path.*$|${DB_LOCATION}/production.sqlite3|" \
-e "/^# TUDUDI_ALLOWED/s/^# //; \
\|_ORIGINS=|s|=.*$|=<your tududi IP or FDQN>|" \
-e "/^# TUDUDI_UPLOAD/s/^# //; \
\|UPLOAD_PATH=|s|=.*$|=${UPLOAD_DIR}|" \
/opt/tududi/backend/.env.example >/opt/tududi/backend/.env
export DB_FILE="${DB_LOCATION}/production.sqlite3"
$STD npm run db:init
msg_ok "Created env and database"

View File

@@ -1214,7 +1214,7 @@ setup_deb822_repo() {
local gpg_url="$2"
local repo_url="$3"
local suite="$4"
local component="${5:-main}"
local component="${5-main}"
local architectures="${6-}" # optional
# Validate required parameters
@@ -2788,7 +2788,7 @@ function setup_java() {
# Validate INSTALLED_VERSION is not empty if matched
local JDK_COUNT=0
JDK_COUNT=$(dpkg -l 2>/dev/null | grep -c "temurin-.*-jdk" || echo "0")
JDK_COUNT=$(dpkg -l 2>/dev/null | grep -c "temurin-.*-jdk" || true)
if [[ -z "$INSTALLED_VERSION" && "${JDK_COUNT:-0}" -gt 0 ]]; then
msg_warn "Found Temurin JDK but cannot determine version"
INSTALLED_VERSION="0"
@@ -4341,31 +4341,63 @@ function setup_rust() {
}
export PATH="$CARGO_BIN:$PATH"
echo 'export PATH="$HOME/.cargo/bin:$PATH"' >>"$HOME/.profile"
# Verify installation
if ! command -v rustc >/dev/null 2>&1; then
msg_error "Rust binary not found after installation"
return 1
fi
local RUST_VERSION=$(rustc --version 2>/dev/null | awk '{print $2}')
if [[ -z "$RUST_VERSION" ]]; then
msg_error "Failed to determine Rust version"
return 1
fi
cache_installed_version "rust" "$RUST_VERSION"
msg_ok "Setup Rust $RUST_VERSION"
else
# Scenario 2: Rustup already installed - update/maintain
msg_info "Update Rust ($RUST_TOOLCHAIN)"
$STD rustup install "$RUST_TOOLCHAIN" || {
msg_error "Failed to install Rust toolchain $RUST_TOOLCHAIN"
return 1
}
$STD rustup default "$RUST_TOOLCHAIN" || {
msg_error "Failed to set default Rust toolchain"
return 1
# Ensure default toolchain is set
$STD rustup default "$RUST_TOOLCHAIN" 2>/dev/null || {
# If default fails, install the toolchain first
$STD rustup install "$RUST_TOOLCHAIN" || {
msg_error "Failed to install Rust toolchain $RUST_TOOLCHAIN"
return 1
}
$STD rustup default "$RUST_TOOLCHAIN" || {
msg_error "Failed to set default Rust toolchain"
return 1
}
}
# Update to latest patch version
$STD rustup update "$RUST_TOOLCHAIN" || true
# Ensure PATH is updated for current shell session
export PATH="$CARGO_BIN:$PATH"
local RUST_VERSION=$(rustc --version 2>/dev/null | awk '{print $2}')
if [[ -z "$RUST_VERSION" ]]; then
msg_error "Failed to determine Rust version after update"
return 1
fi
cache_installed_version "rust" "$RUST_VERSION"
msg_ok "Update Rust $RUST_VERSION"
fi
# Install global crates
if [[ -n "$RUST_CRATES" ]]; then
msg_info "Processing Rust crates: $RUST_CRATES"
IFS=',' read -ra CRATES <<<"$RUST_CRATES"
for crate in "${CRATES[@]}"; do
local NAME VER INSTALLED_VER
crate=$(echo "$crate" | xargs) # trim whitespace
[[ -z "$crate" ]] && continue # skip empty entries
local NAME VER INSTALLED_VER CRATE_LIST
if [[ "$crate" == *"@"* ]]; then
NAME="${crate%@*}"
VER="${crate##*@}"
@@ -4374,18 +4406,50 @@ function setup_rust() {
VER=""
fi
INSTALLED_VER=$(cargo install --list 2>/dev/null | awk "/^$NAME v[0-9]/ {print \$2}" | tr -d 'v')
# Get list of installed crates once
CRATE_LIST=$(cargo install --list 2>/dev/null || echo "")
# Check if already installed
if echo "$CRATE_LIST" | grep -q "^${NAME} "; then
INSTALLED_VER=$(echo "$CRATE_LIST" | grep "^${NAME} " | head -1 | awk '{print $2}' | tr -d 'v:')
if [[ -n "$INSTALLED_VER" ]]; then
if [[ -n "$VER" && "$VER" != "$INSTALLED_VER" ]]; then
$STD cargo install "$NAME" --version "$VER" --force
msg_info "Upgrading $NAME from v$INSTALLED_VER to v$VER"
$STD cargo install "$NAME" --version "$VER" --force || {
msg_error "Failed to install $NAME@$VER"
return 1
}
msg_ok "Upgraded $NAME to v$VER"
elif [[ -z "$VER" ]]; then
$STD cargo install "$NAME" --force
msg_info "Upgrading $NAME to latest"
$STD cargo install "$NAME" --force || {
msg_error "Failed to upgrade $NAME"
return 1
}
local NEW_VER=$(cargo install --list 2>/dev/null | grep "^${NAME} " | head -1 | awk '{print $2}' | tr -d 'v:')
msg_ok "Upgraded $NAME to v$NEW_VER"
else
msg_ok "$NAME v$INSTALLED_VER already installed"
fi
else
$STD cargo install "$NAME" ${VER:+--version "$VER"}
msg_info "Installing $NAME${VER:+@$VER}"
if [[ -n "$VER" ]]; then
$STD cargo install "$NAME" --version "$VER" || {
msg_error "Failed to install $NAME@$VER"
return 1
}
msg_ok "Installed $NAME v$VER"
else
$STD cargo install "$NAME" || {
msg_error "Failed to install $NAME"
return 1
}
local NEW_VER=$(cargo install --list 2>/dev/null | grep "^${NAME} " | head -1 | awk '{print $2}' | tr -d 'v:')
msg_ok "Installed $NAME v$NEW_VER"
fi
fi
done
msg_ok "Processed Rust crates"
fi
}

View File

@@ -30,6 +30,7 @@ INSTALL_PATH="/usr/local/bin/filebrowser"
CONFIG_PATH="/usr/local/community-scripts/fq-config.yaml"
DEFAULT_PORT=8080
SRC_DIR="/"
TMP_BIN="/tmp/filebrowser.$$"
# Get primary IP
IFACE=$(ip -4 route | awk '/default/ {print $5; exit}')
@@ -109,8 +110,9 @@ if [[ -f "$INSTALL_PATH" ]]; then
read -r update_prompt
if [[ "${update_prompt,,}" =~ ^(y|yes)$ ]]; then
msg_info "Updating ${APP}"
curl -fsSL https://github.com/gtsteffaniak/filebrowser/releases/latest/download/linux-amd64-filebrowser -o "$INSTALL_PATH"
chmod +x "$INSTALL_PATH"
curl -fsSL https://github.com/gtsteffaniak/filebrowser/releases/latest/download/linux-amd64-filebrowser -o "$TMP_BIN"
chmod +x "$TMP_BIN"
mv -f "$TMP_BIN" /usr/local/bin/filebrowser
msg_ok "Updated ${APP}"
exit 0
else
@@ -133,8 +135,9 @@ fi
msg_info "Installing ${APP} on ${OS}"
$PKG_MANAGER curl ffmpeg &>/dev/null
curl -fsSL https://github.com/gtsteffaniak/filebrowser/releases/latest/download/linux-amd64-filebrowser -o "$INSTALL_PATH"
chmod +x "$INSTALL_PATH"
curl -fsSL https://github.com/gtsteffaniak/filebrowser/releases/latest/download/linux-amd64-filebrowser -o "$TMP_BIN"
chmod +x "$TMP_BIN"
mv -f "$TMP_BIN" /usr/local/bin/filebrowser
msg_ok "Installed ${APP}"
msg_info "Preparing configuration directory"