Compare commits

..

2 Commits

Author SHA1 Message Date
f543fec926 Update nginxproxymanager.sh 2025-03-24 19:04:30 +01:00
f270ddf0c6 Update nginxproxymanager-install.sh 2025-03-24 19:03:17 +01:00
33 changed files with 438 additions and 989 deletions

View File

@ -111,8 +111,11 @@ Example:
```bash ```bash
$STD apt-get install -y \ $STD apt-get install -y \
curl \
composer \ composer \
git \ git \
sudo \
mc \
nginx nginx
``` ```

View File

@ -14,9 +14,12 @@ setting_up_container
network_check network_check
update_os update_os
# Installing Dependencies # Installing Dependencies with the 3 core dependencies (curl;sudo;mc)
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y \ $STD apt-get install -y \
curl \
sudo \
mc \
[PACKAGE_1] \ [PACKAGE_1] \
[PACKAGE_2] \ [PACKAGE_2] \
[PACKAGE_3] [PACKAGE_3]
@ -77,4 +80,4 @@ msg_info "Cleaning up"
rm -f ${RELEASE}.zip rm -f ${RELEASE}.zip
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@ -7,5 +7,5 @@ contact_links:
url: https://github.com/community-scripts/ProxmoxVE/discussions/new?category=request-script url: https://github.com/community-scripts/ProxmoxVE/discussions/new?category=request-script
about: For feature/script requests, please use the Discussions section. about: For feature/script requests, please use the Discussions section.
- name: 💻 Discord - name: 💻 Discord
url: https://discord.gg/jsYVk5JBxq url: https://discord.gg/UHrpNWGwkH
about: Join our Discord server to chat with other users in the Proxmox Helper Scripts community. about: Join our Discord server to chat with other users in the Proxmox Helper Scripts community.

View File

@ -14,81 +14,22 @@ 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. 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-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
- [core]: add functions for Alpine (update / core deps) [@MickLesk](https://github.com/MickLesk) ([#3437](https://github.com/community-scripts/ProxmoxVE/pull/3437))
### 🧰 Maintenance
- #### 💾 Core
- [core]: Refactor Spinner/MSG Function (support now alpine / performance / handling) [@MickLesk](https://github.com/MickLesk) ([#3436](https://github.com/community-scripts/ProxmoxVE/pull/3436))
## 2025-03-26
### 🆕 New Scripts
- Alpine: Gitea [@MickLesk](https://github.com/MickLesk) ([#3424](https://github.com/community-scripts/ProxmoxVE/pull/3424))
### 🚀 Updated Scripts
- FlowiseAI: Fix dependencies [@tremor021](https://github.com/tremor021) ([#3427](https://github.com/community-scripts/ProxmoxVE/pull/3427))
- #### 🐞 Bug Fixes
- fluid-calendar: Fix failed build during updates [@vhsdream](https://github.com/vhsdream) ([#3417](https://github.com/community-scripts/ProxmoxVE/pull/3417))
### 🧰 Maintenance
- #### 📂 Github
- Remove coredeps in CONTRIBUTOR_AND_GUIDES [@bvdberg01](https://github.com/bvdberg01) ([#3420](https://github.com/community-scripts/ProxmoxVE/pull/3420))
## 2025-03-25
### 🧰 Maintenance
- #### 📂 Github
- Discord invite link updated [@MickLesk](https://github.com/MickLesk) ([#3412](https://github.com/community-scripts/ProxmoxVE/pull/3412))
## 2025-03-24 ## 2025-03-24
### 🆕 New Scripts ### 🆕 New Scripts
- fileflows [@kkroboth](https://github.com/kkroboth) ([#3392](https://github.com/community-scripts/ProxmoxVE/pull/3392)) - wazuh [@omiinaya](https://github.com/omiinaya) ([#3381](https://github.com/community-scripts/ProxmoxVE/pull/3381))
- wazuh [@omiinaya](https://github.com/omiinaya) ([#3381](https://github.com/community-scripts/ProxmoxVE/pull/3381))
- yt-dlp-webui [@CrazyWolf13](https://github.com/CrazyWolf13) ([#3364](https://github.com/community-scripts/ProxmoxVE/pull/3364)) - yt-dlp-webui [@CrazyWolf13](https://github.com/CrazyWolf13) ([#3364](https://github.com/community-scripts/ProxmoxVE/pull/3364))
- Extension/New Script: Redis Alpine Installation [@MickLesk](https://github.com/MickLesk) ([#3367](https://github.com/community-scripts/ProxmoxVE/pull/3367)) - Extension/New Script: Redis Alpine Installation [@MickLesk](https://github.com/MickLesk) ([#3367](https://github.com/community-scripts/ProxmoxVE/pull/3367))
### 🚀 Updated Scripts ### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Extend HOME Env for Kubo [@MickLesk](https://github.com/MickLesk) ([#3397](https://github.com/community-scripts/ProxmoxVE/pull/3397))
- #### ✨ New Features - #### ✨ New Features
- [core] Rebase Scripts (formatting, highlighting & remove old deps) [@MickLesk](https://github.com/MickLesk) ([#3378](https://github.com/community-scripts/ProxmoxVE/pull/3378)) - [core] Rebase Scripts (formatting, highlighting & remove old deps) [@MickLesk](https://github.com/MickLesk) ([#3378](https://github.com/community-scripts/ProxmoxVE/pull/3378))
- #### 🔧 Refactor - #### 🔧 Refactor
- qBittorrent: Switch to static builds for faster updating/upgrading [@tremor021](https://github.com/tremor021) ([#3405](https://github.com/community-scripts/ProxmoxVE/pull/3405))
- Refactor: ErsatzTV Script [@MickLesk](https://github.com/MickLesk) ([#3365](https://github.com/community-scripts/ProxmoxVE/pull/3365)) - Refactor: ErsatzTV Script [@MickLesk](https://github.com/MickLesk) ([#3365](https://github.com/community-scripts/ProxmoxVE/pull/3365))
### 🧰 Maintenance ### 🧰 Maintenance
@ -97,10 +38,6 @@ All LXC instances created using this repository come pre-installed with Midnight
- [core] install core deps (debian / ubuntu) [@MickLesk](https://github.com/MickLesk) ([#3366](https://github.com/community-scripts/ProxmoxVE/pull/3366)) - [core] install core deps (debian / ubuntu) [@MickLesk](https://github.com/MickLesk) ([#3366](https://github.com/community-scripts/ProxmoxVE/pull/3366))
- #### 💾 Core
- [core] extend hardware transcoding for fileflows #3392 [@MickLesk](https://github.com/MickLesk) ([#3396](https://github.com/community-scripts/ProxmoxVE/pull/3396))
- #### 📂 Github - #### 📂 Github
- Refactor Changelog Workflow [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#3371](https://github.com/community-scripts/ProxmoxVE/pull/3371)) - Refactor Changelog Workflow [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#3371](https://github.com/community-scripts/ProxmoxVE/pull/3371))

View File

@ -13,7 +13,7 @@
<a href="https://helper-scripts.com"> <a href="https://helper-scripts.com">
<img src="https://img.shields.io/badge/Website-4c9b3f?style=for-the-badge&logo=github&logoColor=white" alt="Website" /> <img src="https://img.shields.io/badge/Website-4c9b3f?style=for-the-badge&logo=github&logoColor=white" alt="Website" />
</a> </a>
<a href="https://discord.gg/jsYVk5JBxq"> <a href="https://discord.gg/UHrpNWGwkH">
<img src="https://img.shields.io/badge/Discord-7289da?style=for-the-badge&logo=discord&logoColor=white" alt="Discord" /> <img src="https://img.shields.io/badge/Discord-7289da?style=for-the-badge&logo=discord&logoColor=white" alt="Discord" />
</a> </a>
<a href="https://ko-fi.com/community_scripts"> <a href="https://ko-fi.com/community_scripts">
@ -82,7 +82,7 @@ We appreciate any contributions to the project—whether it's bug reports, featu
Join our community for support: Join our community for support:
- **Discord**: Join our [Proxmox Helper Scripts Discord server](https://discord.gg/jsYVk5JBxq) for real-time support. - **Discord**: Join our [Proxmox Helper Scripts Discord server](https://discord.gg/UHrpNWGwkH) for real-time support.
- **GitHub Discussions**: [Ask questions or report issues](https://github.com/community-scripts/ProxmoxVE/discussions). - **GitHub Discussions**: [Ask questions or report issues](https://github.com/community-scripts/ProxmoxVE/discussions).
## 🤝 Report a Bug or Feature Request ## 🤝 Report a Bug or Feature Request

View File

@ -13,7 +13,7 @@ This project currently supports the following versions of Proxmox VE:
## Reporting a Vulnerability ## Reporting a Vulnerability
Security vulnerabilities shouldnt be reported publicly to prevent potential exploitation. Instead, please report any vulnerabilities privately by reaching out directly to us. You can either join our [Discord server](https://discord.gg/jsYVk5JBxq) and send a direct message to a maintainer or contact us via email at contact@community-scripts.org. Be sure to include a detailed description of the vulnerability and the steps to reproduce it. Thank you for helping us keep our project secure! Security vulnerabilities shouldnt be reported publicly to prevent potential exploitation. Instead, please report any vulnerabilities privately by reaching out directly to us. You can either join our [Discord server](https://discord.gg/UHrpNWGwkH) and send a direct message to a maintainer or contact us via email at contact@community-scripts.org. Be sure to include a detailed description of the vulnerability and the steps to reproduce it. Thank you for helping us keep our project secure!
Once a vulnerability has been reported, the project maintainers will review it and acknowledge the report within 7 business days. We will then work to address the vulnerability and provide a fix as soon as possible. Depending on the severity of the issue, a patch may be released immediately or included in the next scheduled update. Once a vulnerability has been reported, the project maintainers will review it and acknowledge the report within 7 business days. We will then work to address the vulnerability and provide a fix as soon as possible. Depending on the severity of the issue, a patch may be released immediately or included in the next scheduled update.

View File

@ -1,45 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://gitea.io
APP="Alpine-Gitea"
var_tags="alpine;git"
var_cpu="1"
var_ram="256"
var_disk="1"
var_os="alpine"
var_version="3.21"
var_unprivileged="1"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
msg_info "Updating Alpine Packages"
apk update
apk upgrade
msg_ok "Updated Alpine Packages"
msg_info "Updating Gitea"
apk upgrade gitea
msg_ok "Updated Gitea"
msg_info "Restarting Gitea"
rc-service gitea restart
msg_ok "Restarted Gitea"
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"

View File

@ -1,50 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://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

@ -39,7 +39,7 @@ function update_script() {
temp_file=$(mktemp) temp_file=$(mktemp)
wget -qO- https://github.com/ErsatzTV/ErsatzTV/releases/download/${RELEASE}/ErsatzTV-${RELEASE}-linux-x64.tar.gz -O "$temp_file" wget -qO- https://github.com/ErsatzTV/ErsatzTV/releases/download/${RELEASE}/ErsatzTV-${RELEASE}-linux-x64.tar.gz -O "$temp_file"
tar -xzf "$temp_file" tar -xzf "$temp_file"
mv ErsatzTV-${RELEASE}-linux-x64 /opt/ErsatzTV mv /opt/ErsatzTV-${RELEASE}-linux-x64 /opt/ErsatzTV
cp -R ErsatzTV-backup/* /opt/ErsatzTV/ cp -R ErsatzTV-backup/* /opt/ErsatzTV/
rm -rf ErsatzTV-backup rm -rf ErsatzTV-backup
echo "${RELEASE}" >/opt/${APP}_version.txt echo "${RELEASE}" >/opt/${APP}_version.txt
@ -67,4 +67,4 @@ description
msg_ok "Completed Successfully!\n" msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8409${CL}" echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8409${CL}"

View File

@ -1,73 +0,0 @@
#!/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: kkroboth
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://fileflows.com/
APP="FileFlows"
var_tags="media;automation"
var_cpu="2"
var_ram="2048"
var_disk="8"
var_os="debian"
var_version="12"
var_unprivileged="1"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/fileflows ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
update_available=$(curl -s -X 'GET' "http://localhost:19200/api/status/update-available" -H 'accept: application/json' | jq .UpdateAvailable)
if [[ "${update_available}" == "true" ]]; then
msg_info "Stopping $APP"
systemctl stop fileflows
msg_ok "Stopped $APP"
msg_info "Creating Backup"
backup_filename="/opt/${APP}_backup_$(date +%F).tar.gz"
tar -czf $backup_filename -C /opt/fileflows Data
msg_ok "Backup Created"
msg_info "Updating $APP to latest version"
temp_file=$(mktemp)
curl -fsSL https://fileflows.com/downloads/zip -o $temp_file
unzip -oq -d /opt/fileflows $temp_file
msg_ok "Updated $APP to latest version"
msg_info "Starting $APP"
systemctl start fileflows
msg_ok "Started $APP"
msg_info "Cleaning Up"
rm -rf $temp_file
rm -rf $backup_filename
msg_ok "Cleanup Completed"
msg_ok "Update Successful"
else
msg_ok "No update required. ${APP} is already at latest version"
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}:19200${CL}"

View File

@ -35,14 +35,15 @@ function update_script() {
systemctl stop fluid-calendar.service systemctl stop fluid-calendar.service
msg_ok "Stopped $APP" msg_ok "Stopped $APP"
msg_info "Creating Backup"
tar -czf "/opt/${APP}_backup_$(date +%F).tar.gz" /opt/fluid-calendar
msg_ok "Backup Created"
msg_info "Updating $APP to v${RELEASE}" msg_info "Updating $APP to v${RELEASE}"
cp /opt/fluid-calendar/.env /opt/fluid.env
rm -rf /opt/fluid-calendar
tmp_file=$(mktemp) tmp_file=$(mktemp)
wget -q "https://github.com/dotnetfactory/fluid-calendar/archive/refs/tags/v${RELEASE}.zip" -O $tmp_file wget -q "https://github.com/dotnetfactory/fluid-calendar/archive/refs/tags/v${RELEASE}.zip" -O $tmp_file
unzip -q $tmp_file unzip -q $tmp_file
mv ${APP}-${RELEASE}/ /opt/fluid-calendar cp -rf ${APP}-${RELEASE}/* /opt/fluid-calendar
mv /opt/fluid.env /opt/fluid-calendar/.env
cd /opt/fluid-calendar cd /opt/fluid-calendar
export NEXT_TELEMETRY_DISABLED=1 export NEXT_TELEMETRY_DISABLED=1
$STD npm install --legacy-peer-deps $STD npm install --legacy-peer-deps
@ -57,6 +58,8 @@ function update_script() {
msg_info "Cleaning Up" msg_info "Cleaning Up"
rm -rf $tmp_file rm -rf $tmp_file
rm -rf "/opt/${APP}_backup_$(date +%F).tar.gz"
rm -rf /tmp/${APP}-${RELEASE}
msg_ok "Cleanup Completed" msg_ok "Cleanup Completed"
echo "${RELEASE}" >/opt/${APP}_version.txt echo "${RELEASE}" >/opt/${APP}_version.txt

View File

@ -28,7 +28,7 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
RELEASE=$(curl -s https://api.github.com/repos/StarFleetCPTN/GoMFT/releases/latest | grep "tag_name" | awk '{print substr($2, 4, length($2)-5) }') RELEASE=$(curl -s 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 if ! dpkg -l | grep -q "^ii.*build-essential"; then
$STD apt-get install -y build-essential $STD apt-get install -y build-essential
fi fi

View File

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

View File

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

View File

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

View File

@ -62,8 +62,6 @@ function update_script() {
ln -sf /usr/local/openresty/nginx/ /etc/nginx ln -sf /usr/local/openresty/nginx/ /etc/nginx
sed -i "s|\"version\": \"0.0.0\"|\"version\": \"$RELEASE\"|" backend/package.json sed -i "s|\"version\": \"0.0.0\"|\"version\": \"$RELEASE\"|" backend/package.json
sed -i "s|\"version\": \"0.0.0\"|\"version\": \"$RELEASE\"|" frontend/package.json sed -i "s|\"version\": \"0.0.0\"|\"version\": \"$RELEASE\"|" frontend/package.json
sed -i 's|"fork-me": ".*"|"fork-me": "Proxmox VE Helper-Scripts"|' frontend/js/i18n/messages.json
sed -i "s|https://github.com.*source=nginx-proxy-manager|https://helper-scripts.com|g" frontend/js/app/ui/footer/main.ejs
sed -i 's+^daemon+#daemon+g' docker/rootfs/etc/nginx/nginx.conf sed -i 's+^daemon+#daemon+g' docker/rootfs/etc/nginx/nginx.conf
NGINX_CONFS=$(find "$(pwd)" -type f -name "*.conf") NGINX_CONFS=$(find "$(pwd)" -type f -name "*.conf")
for NGINX_CONF in $NGINX_CONFS; do for NGINX_CONF in $NGINX_CONFS; do

View File

@ -1,7 +1,7 @@
#!/usr/bin/env bash #!/usr/bin/env bash
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG # Copyright (c) 2021-2025 tteck
# Author: tteck (tteckster) | Co-Author: Slaviša Arežina (tremor021) # Author: tteck (tteckster)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://www.qbittorrent.org/ # Source: https://www.qbittorrent.org/
@ -27,36 +27,10 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
if [[ ! -f /opt/${APP}_version.txt ]]; then msg_info "Updating ${APP} LXC"
touch /opt/${APP}_version.txt $STD apt-get update
mkdir -p $HOME/.config/qBittorrent/ $STD apt-get -y upgrade
mkdir -p /opt/qbittorrent/ msg_ok "Updated ${APP} LXC"
mv /.config/qBittorrent $HOME/.config/
$STD apt-get remove --purge -y qbittorrent-nox
sed -i 's@ExecStart=/usr/bin/qbittorrent-nox@ExecStart=/opt/qbittorrent/qbittorrent-nox@g' /etc/systemd/system/qbittorrent-nox.service
systemctl daemon-reload
fi
FULLRELEASE=$(curl -s https://api.github.com/repos/userdocs/qbittorrent-nox-static/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
RELEASE=$(echo $FULLRELEASE | cut -c 9-13)
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Stopping Service"
systemctl stop qbittorrent-nox
msg_ok "Stopped Service"
msg_info "Updating ${APP} to v${RELEASE}"
rm -f /opt/qbittorrent/qbittorrent-nox
curl -fsSL "https://github.com/userdocs/qbittorrent-nox-static/releases/download/${FULLRELEASE}/x86_64-qbittorrent-nox" -o /opt/qbittorrent/qbittorrent-nox
chmod +x /opt/qbittorrent/qbittorrent-nox
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated $APP to v${RELEASE}"
msg_info "Starting Service"
systemctl start qbittorrent-nox
msg_ok "Started Service"
msg_ok "Updated Successfully"
else
msg_ok "No update required. ${APP} is already at v${RELEASE}"
fi
exit exit
} }
@ -67,4 +41,4 @@ description
msg_ok "Completed Successfully!\n" msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8090${CL}" echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8090${CL}"

View File

@ -1,39 +0,0 @@
{
"name": "FileFlows",
"slug": "fileflows",
"categories": [
13
],
"date_created": "2025-03-24",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 19200,
"documentation": "https://fileflows.com/docs",
"website": "https://fileflows.com/",
"logo": "https://raw.githubusercontent.com/revenz/FileFlows/refs/heads/develop/icon.png",
"description": "FileFlows is a powerful, open-source tool for automating media file processing workflows, including encoding, decoding, and media management. It offers an intuitive GUI and extensive plugin support, making it ideal for tasks like video transcoding, organizing, and managing large media libraries.",
"install_methods": [
{
"type": "default",
"script": "ct/fileflows.sh",
"resources": {
"cpu": 2,
"ram": 2048,
"hdd": 8,
"os": "Debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "With Privileged/Unprivileged Hardware Acceleration Support",
"type": "info"
}
]
}

View File

@ -1,39 +1,34 @@
{ {
"name": "FlowiseAI", "name": "FlowiseAI",
"slug": "flowiseai", "slug": "flowiseai",
"categories": [ "categories": [
20 20
], ],
"date_created": "2024-05-02", "date_created": "2024-05-02",
"type": "ct", "type": "ct",
"updateable": true, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 3000, "interface_port": 3000,
"documentation": "https://docs.flowiseai.com/", "documentation": null,
"website": "https://flowiseai.com/", "website": "https://flowiseai.com/",
"logo": "https://flowiseai.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Flogo-color-high.e60de2f8.png&w=256&q=75", "logo": "https://flowiseai.com/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Flogo-color-high.e60de2f8.png&w=256&q=75",
"description": "FlowiseAI is an open source low-code tool for developers to build customized LLM orchestration flow & AI agents", "description": "FlowiseAI is an open source low-code tool for developers to build customized LLM orchestration flow & AI agents",
"install_methods": [ "install_methods": [
{ {
"type": "default", "type": "default",
"script": "ct/flowiseai.sh", "script": "ct/flowiseai.sh",
"resources": { "resources": {
"cpu": 4, "cpu": 4,
"ram": 4096, "ram": 4096,
"hdd": 10, "hdd": 10,
"os": "debian", "os": "debian",
"version": "12" "version": "12"
} }
} }
], ],
"default_credentials": { "default_credentials": {
"username": null, "username": null,
"password": null "password": null
}, },
"notes": [ "notes": []
{ }
"text": "Application takes long time to install. Please be patient!",
"type": "warning"
}
]
}

View File

@ -24,17 +24,6 @@
"os": "debian", "os": "debian",
"version": "12" "version": "12"
} }
},
{
"type": "alpine",
"script": "ct/alpine-gitea.sh",
"resources": {
"cpu": 1,
"ram": 256,
"hdd": 1,
"os": "alpine",
"version": "3.21"
}
} }
], ],
"default_credentials": { "default_credentials": {
@ -42,4 +31,4 @@
"password": null "password": null
}, },
"notes": [] "notes": []
} }

View File

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

View File

@ -2,323 +2,48 @@
{ {
"name": "fhem/fhem-mirror", "name": "fhem/fhem-mirror",
"version": "6.2", "version": "6.2",
"date": "2025-03-28T10:33:13Z" "date": "2025-03-24T10:36:10Z"
},
{
"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": "Jackett/Jackett",
"version": "v0.22.1702",
"date": "2025-03-28T05:57:28Z"
},
{
"name": "gethomepage/homepage",
"version": "v1.1.1",
"date": "2025-03-28T04:12:31Z"
},
{
"name": "documenso/documenso",
"version": "v1.10.0-rc.3",
"date": "2025-03-28T03:45:54Z"
},
{
"name": "theonedev/onedev",
"version": "v11.8.1",
"date": "2025-03-28T00:13:20Z"
},
{
"name": "StarFleetCPTN/GoMFT",
"version": "v.0.2.3",
"date": "2025-03-27T23:54:49Z"
},
{
"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": "keycloak/keycloak",
"version": "26.1.4",
"date": "2025-03-13T15:41:42Z"
},
{
"name": "home-assistant/core",
"version": "2025.3.4",
"date": "2025-03-21T20:22:46Z"
},
{
"name": "gristlabs/grist-core",
"version": "v1.5.0",
"date": "2025-03-27T19:59:55Z"
},
{
"name": "hivemq/hivemq-community-edition",
"version": "2025.2",
"date": "2025-03-27T19:21:13Z"
},
{
"name": "fallenbagel/jellyseerr",
"version": "preview-music-support",
"date": "2025-03-27T16:54:41Z"
},
{
"name": "immich-app/immich",
"version": "v1.130.3",
"date": "2025-03-27T16:38:04Z"
},
{
"name": "msgbyte/tianji",
"version": "v1.19.4",
"date": "2025-03-27T16:25:34Z"
},
{
"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": "syncthing/syncthing",
"version": "v1.29.3",
"date": "2025-03-12T11:56:30Z"
},
{
"name": "evcc-io/evcc",
"version": "0.202.1",
"date": "2025-03-27T08:24:55Z"
},
{
"name": "morpheus65535/bazarr",
"version": "v1.5.1",
"date": "2025-01-01T16:15:52Z"
},
{
"name": "openobserve/openobserve",
"version": "v0.14.5-rc6",
"date": "2025-03-27T05:15:49Z"
},
{
"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",
"date": "2025-03-26T21:04:38Z"
},
{
"name": "ollama/ollama",
"version": "v0.6.3-rc1",
"date": "2025-03-26T20:39:01Z"
},
{
"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": "semaphoreui/semaphore", "name": "semaphoreui/semaphore",
"version": "v2.13.2", "version": "v2.13.1",
"date": "2025-03-26T19:13:48Z" "date": "2025-03-24T09:42:32Z"
}, },
{ {
"name": "dgtlmoon/changedetection.io", "name": "zwave-js/zwave-js-ui",
"version": "0.49.9", "version": "v10.1.1",
"date": "2025-03-26T15:31:03Z" "date": "2025-03-24T08:34:47Z"
},
{
"name": "prometheus/prometheus",
"version": "v0.303.0-rc.0",
"date": "2025-03-26T12:48:46Z"
},
{
"name": "jupyter/notebook",
"version": "@jupyter-notebook/ui-components@7.4.0-beta.3",
"date": "2025-03-26T10:07:53Z"
},
{
"name": "forgejo/forgejo",
"version": "v12.0.0-dev",
"date": "2025-03-26T09:58:55Z"
}, },
{ {
"name": "Checkmk/checkmk", "name": "Checkmk/checkmk",
"version": "v2.2.0p41", "version": "v2.4.0b2-rc1",
"date": "2025-03-26T09:55:26Z" "date": "2025-03-24T07:20:45Z"
}, },
{ {
"name": "sct/overseerr", "name": "cockpit-project/cockpit",
"version": "v1.34.0", "version": "336",
"date": "2025-03-26T08:48:34Z" "date": "2025-03-24T07:16:02Z"
},
{
"name": "pocketbase/pocketbase",
"version": "v0.26.4",
"date": "2025-03-26T05:16:46Z"
},
{
"name": "esphome/esphome",
"version": "2025.3.2",
"date": "2025-03-25T23:06:45Z"
},
{
"name": "grafana/grafana",
"version": "v11.6.0",
"date": "2025-03-25T22:10:15Z"
},
{
"name": "Stirling-Tools/Stirling-PDF",
"version": "v0.45.0",
"date": "2025-03-25T18:48:17Z"
},
{
"name": "ipfs/kubo",
"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",
"date": "2025-03-25T15:11:18Z"
},
{
"name": "jenkinsci/jenkins",
"version": "jenkins-2.503",
"date": "2025-03-25T14:01:20Z"
},
{
"name": "crowdsecurity/crowdsec",
"version": "v1.6.8",
"date": "2025-03-25T13:33:10Z"
}, },
{ {
"name": "icereed/paperless-gpt", "name": "icereed/paperless-gpt",
"version": "v0.14.1", "version": "v0.14.0",
"date": "2025-03-25T10:09:14Z" "date": "2025-03-24T07:03:24Z"
},
{
"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": "influxdata/influxdb",
"version": "v3.0.0-0.beta.2",
"date": "2025-03-24T21:12:19Z"
},
{
"name": "ZoeyVid/NPMplus",
"version": "2025-03-24-r2",
"date": "2025-03-24T20:52:35Z"
},
{
"name": "HabitRPG/habitica",
"version": "v5.35.0",
"date": "2025-03-24T20:51:10Z"
},
{
"name": "go-gitea/gitea",
"version": "v1.23.6",
"date": "2025-03-24T20:38:45Z"
},
{
"name": "docmost/docmost",
"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",
"date": "2025-03-24T12:20:51Z"
},
{
"name": "wavelog/wavelog",
"version": "2.0.2",
"date": "2025-03-24T12:02:08Z"
}, },
{ {
"name": "nzbgetcom/nzbget", "name": "nzbgetcom/nzbget",
"version": "v24.8", "version": "v24.8",
"date": "2025-03-18T07:33:51Z" "date": "2025-03-18T07:33:51Z"
}, },
{
"name": "Jackett/Jackett",
"version": "v0.22.1685",
"date": "2025-03-24T05:54:06Z"
},
{
"name": "pocketbase/pocketbase",
"version": "v0.26.3",
"date": "2025-03-24T04:42:52Z"
},
{ {
"name": "firefly-iii/firefly-iii", "name": "firefly-iii/firefly-iii",
"version": "v6.2.10", "version": "v6.2.10",
@ -334,21 +59,71 @@
"version": "v1.17.0", "version": "v1.17.0",
"date": "2025-03-24T00:46:32Z" "date": "2025-03-24T00:46:32Z"
}, },
{
"name": "runtipi/runtipi",
"version": "v3.10.0",
"date": "2025-03-15T14:38:16Z"
},
{
"name": "msgbyte/tianji",
"version": "v1.19.2",
"date": "2025-03-23T16:33:14Z"
},
{
"name": "dgtlmoon/changedetection.io",
"version": "0.49.7",
"date": "2025-03-23T15:51:11Z"
},
{
"name": "keycloak/keycloak",
"version": "26.1.4",
"date": "2025-03-13T15:41:42Z"
},
{ {
"name": "Lidarr/Lidarr", "name": "Lidarr/Lidarr",
"version": "v2.10.3.4602", "version": "v2.10.3.4602",
"date": "2025-03-23T11:00:37Z" "date": "2025-03-23T11:00:37Z"
}, },
{
"name": "YunoHost/yunohost",
"version": "debian/12.0.12",
"date": "2025-03-16T11:59:24Z"
},
{ {
"name": "nicolargo/glances", "name": "nicolargo/glances",
"version": "v4.3.1", "version": "v4.3.1",
"date": "2025-03-23T09:02:54Z" "date": "2025-03-23T09:02:54Z"
}, },
{
"name": "forgejo/forgejo",
"version": "v10.0.3",
"date": "2025-03-23T08:58:24Z"
},
{
"name": "Radarr/Radarr",
"version": "v5.20.2.9777",
"date": "2025-03-18T12:11:37Z"
},
{ {
"name": "Prowlarr/Prowlarr", "name": "Prowlarr/Prowlarr",
"version": "v1.32.2.4987", "version": "v1.32.2.4987",
"date": "2025-03-16T09:41:37Z" "date": "2025-03-16T09:41:37Z"
}, },
{
"name": "morpheus65535/bazarr",
"version": "v1.5.1",
"date": "2025-01-01T16:15:52Z"
},
{
"name": "theonedev/onedev",
"version": "v11.7.6",
"date": "2025-03-23T05:08:22Z"
},
{
"name": "esphome/esphome",
"version": "2025.3.1",
"date": "2025-03-23T04:45:21Z"
},
{ {
"name": "usememos/memos", "name": "usememos/memos",
"version": "v0.24.2", "version": "v0.24.2",
@ -364,6 +139,16 @@
"version": "sdk/v0.23.0", "version": "sdk/v0.23.0",
"date": "2025-03-22T17:26:10Z" "date": "2025-03-22T17:26:10Z"
}, },
{
"name": "documenso/documenso",
"version": "v1.10.0-rc.1",
"date": "2025-03-22T06:34:33Z"
},
{
"name": "ollama/ollama",
"version": "v0.6.2",
"date": "2025-03-18T03:11:33Z"
},
{ {
"name": "netbox-community/netbox", "name": "netbox-community/netbox",
"version": "v4.2.6", "version": "v4.2.6",
@ -374,6 +159,11 @@
"version": "4.4.1", "version": "4.4.1",
"date": "2024-12-20T13:21:31Z" "date": "2024-12-20T13:21:31Z"
}, },
{
"name": "home-assistant/core",
"version": "2025.3.4",
"date": "2025-03-21T20:22:46Z"
},
{ {
"name": "leiweibau/Pi.Alert", "name": "leiweibau/Pi.Alert",
"version": "v2025-03-21", "version": "v2025-03-21",
@ -389,6 +179,16 @@
"version": "v1.12.0", "version": "v1.12.0",
"date": "2025-03-21T19:14:59Z" "date": "2025-03-21T19:14:59Z"
}, },
{
"name": "influxdata/influxdb",
"version": "v1.12.0rc0",
"date": "2025-03-21T17:24:38Z"
},
{
"name": "ZoeyVid/NPMplus",
"version": "2025-03-21-r1",
"date": "2025-03-21T14:54:00Z"
},
{ {
"name": "photoprism/photoprism", "name": "photoprism/photoprism",
"version": "250321-57590c48b", "version": "250321-57590c48b",
@ -399,16 +199,51 @@
"version": "v0.107.59", "version": "v0.107.59",
"date": "2025-03-21T11:11:39Z" "date": "2025-03-21T11:11:39Z"
}, },
{
"name": "openobserve/openobserve",
"version": "v0.14.5-rc5",
"date": "2025-03-21T10:50:34Z"
},
{
"name": "StarFleetCPTN/GoMFT",
"version": "v0.1.18",
"date": "2025-03-21T04:36:04Z"
},
{ {
"name": "jhuckaby/Cronicle", "name": "jhuckaby/Cronicle",
"version": "v0.9.77", "version": "v0.9.77",
"date": "2025-03-21T02:25:42Z" "date": "2025-03-21T02:25:42Z"
}, },
{
"name": "ipfs/kubo",
"version": "v0.34.0",
"date": "2025-03-20T21:51:05Z"
},
{
"name": "pocket-id/pocket-id",
"version": "v0.43.1",
"date": "2025-03-20T20:38:06Z"
},
{ {
"name": "stonith404/pingvin-share", "name": "stonith404/pingvin-share",
"version": "v1.10.4", "version": "v1.10.4",
"date": "2025-03-20T18:56:10Z" "date": "2025-03-20T18:56:10Z"
}, },
{
"name": "dotnetfactory/fluid-calendar",
"version": "v1.2.3",
"date": "2025-03-20T17:54:55Z"
},
{
"name": "ellite/Wallos",
"version": "v2.48.0",
"date": "2025-03-20T16:57:43Z"
},
{
"name": "HabitRPG/habitica",
"version": "v5.34.4",
"date": "2025-03-20T16:54:45Z"
},
{ {
"name": "neo4j/neo4j", "name": "neo4j/neo4j",
"version": "4.4.42", "version": "4.4.42",
@ -419,6 +254,31 @@
"version": "8.0-rc1", "version": "8.0-rc1",
"date": "2025-03-11T18:16:27Z" "date": "2025-03-11T18:16:27Z"
}, },
{
"name": "Stirling-Tools/Stirling-PDF",
"version": "v0.44.3",
"date": "2025-03-20T09:43:56Z"
},
{
"name": "jenkinsci/jenkins",
"version": "jenkins-2.502",
"date": "2025-03-18T15:02:59Z"
},
{
"name": "wazuh/wazuh",
"version": "coverity-w11-4.12.0",
"date": "2025-03-14T20:04:02Z"
},
{
"name": "jupyter/notebook",
"version": "@jupyter-notebook/ui-components@7.4.0-beta.2",
"date": "2025-03-20T07:41:24Z"
},
{
"name": "evcc-io/evcc",
"version": "0.201.1",
"date": "2025-03-20T06:59:18Z"
},
{ {
"name": "rabbitmq/rabbitmq-server", "name": "rabbitmq/rabbitmq-server",
"version": "v4.0.7", "version": "v4.0.7",
@ -449,11 +309,46 @@
"version": "v0.22.1", "version": "v0.22.1",
"date": "2025-03-18T21:01:22Z" "date": "2025-03-18T21:01:22Z"
}, },
{
"name": "zitadel/zitadel",
"version": "v2.66.14",
"date": "2025-03-18T16:05:48Z"
},
{
"name": "prometheus/prometheus",
"version": "v2.53.4",
"date": "2025-03-18T15:50:39Z"
},
{
"name": "syncthing/syncthing",
"version": "v1.29.3",
"date": "2025-03-12T11:56:30Z"
},
{
"name": "element-hq/synapse",
"version": "v1.126.0",
"date": "2025-03-11T16:29:42Z"
},
{ {
"name": "OctoPrint/OctoPrint", "name": "OctoPrint/OctoPrint",
"version": "1.10.3", "version": "1.10.3",
"date": "2024-11-05T09:20:50Z" "date": "2024-11-05T09:20:50Z"
}, },
{
"name": "n8n-io/n8n",
"version": "n8n@1.84.0",
"date": "2025-03-17T13:58:36Z"
},
{
"name": "zabbix/zabbix",
"version": "7.2.5rc1",
"date": "2025-03-18T14:10:32Z"
},
{
"name": "crowdsecurity/crowdsec",
"version": "v1.6.6",
"date": "2025-03-18T13:05:01Z"
},
{ {
"name": "apache/couchdb", "name": "apache/couchdb",
"version": "3.4.3.post1", "version": "3.4.3.post1",
@ -494,11 +389,36 @@
"version": "v0.92.4", "version": "v0.92.4",
"date": "2025-03-17T16:00:19Z" "date": "2025-03-17T16:00:19Z"
}, },
{
"name": "Graylog2/graylog2-server",
"version": "6.2.0-beta.1",
"date": "2025-03-17T13:00:39Z"
},
{
"name": "home-assistant/operating-system",
"version": "15.0",
"date": "2025-03-17T10:26:18Z"
},
{ {
"name": "webmin/webmin", "name": "webmin/webmin",
"version": "2.303", "version": "2.303",
"date": "2025-03-17T04:54:50Z" "date": "2025-03-17T04:54:50Z"
}, },
{
"name": "fallenbagel/jellyseerr",
"version": "v2.5.1",
"date": "2025-03-17T03:18:32Z"
},
{
"name": "glanceapp/glance",
"version": "v0.7.7",
"date": "2025-03-17T02:24:06Z"
},
{
"name": "gethomepage/homepage",
"version": "v1.0.4",
"date": "2025-03-16T22:19:31Z"
},
{ {
"name": "autobrr/autobrr", "name": "autobrr/autobrr",
"version": "v1.60.0", "version": "v1.60.0",
@ -514,6 +434,11 @@
"version": "v3.5.0", "version": "v3.5.0",
"date": "2025-03-16T06:05:55Z" "date": "2025-03-16T06:05:55Z"
}, },
{
"name": "VictoriaMetrics/VictoriaMetrics",
"version": "v1.17.0-victorialogs",
"date": "2025-03-16T00:22:43Z"
},
{ {
"name": "pelican-dev/wings", "name": "pelican-dev/wings",
"version": "v1.0.0-beta10", "version": "v1.0.0-beta10",
@ -529,6 +454,11 @@
"version": "v1.6.1", "version": "v1.6.1",
"date": "2025-03-15T17:29:17Z" "date": "2025-03-15T17:29:17Z"
}, },
{
"name": "duplicati/duplicati",
"version": "v2.1.0.111-2.1.0.111_canary_2025-03-15",
"date": "2025-03-15T11:06:44Z"
},
{ {
"name": "henrygd/beszel", "name": "henrygd/beszel",
"version": "v0.10.2", "version": "v0.10.2",
@ -589,6 +519,11 @@
"version": "4.0.1-beta.1", "version": "4.0.1-beta.1",
"date": "2024-12-13T00:16:24Z" "date": "2024-12-13T00:16:24Z"
}, },
{
"name": "emqx/emqx",
"version": "e5.9.0-beta.1",
"date": "2025-03-12T09:52:26Z"
},
{ {
"name": "gotson/komga", "name": "gotson/komga",
"version": "1.21.2", "version": "1.21.2",
@ -624,6 +559,11 @@
"version": "v1.9.9", "version": "v1.9.9",
"date": "2025-03-10T03:22:11Z" "date": "2025-03-10T03:22:11Z"
}, },
{
"name": "caddyserver/caddy",
"version": "v2.9.1",
"date": "2025-01-08T15:22:53Z"
},
{ {
"name": "awawa-dev/HyperHDR", "name": "awawa-dev/HyperHDR",
"version": "v21.0.0.0", "version": "v21.0.0.0",
@ -684,6 +624,11 @@
"version": "3.0.0", "version": "3.0.0",
"date": "2025-03-05T21:41:29Z" "date": "2025-03-05T21:41:29Z"
}, },
{
"name": "immich-app/immich",
"version": "v1.129.0",
"date": "2025-03-05T20:19:18Z"
},
{ {
"name": "snipe/snipe-it", "name": "snipe/snipe-it",
"version": "v8.0.4", "version": "v8.0.4",
@ -694,11 +639,21 @@
"version": "tc_v0.6.4", "version": "tc_v0.6.4",
"date": "2025-03-05T15:43:40Z" "date": "2025-03-05T15:43:40Z"
}, },
{
"name": "go-gitea/gitea",
"version": "v1.23.5",
"date": "2025-03-05T00:10:15Z"
},
{ {
"name": "apache/tomcat", "name": "apache/tomcat",
"version": "10.1.39", "version": "10.1.39",
"date": "2025-03-04T19:05:18Z" "date": "2025-03-04T19:05:18Z"
}, },
{
"name": "tailscale/tailscale",
"version": "v1.80.3",
"date": "2025-03-04T18:47:25Z"
},
{ {
"name": "pi-hole/pi-hole", "name": "pi-hole/pi-hole",
"version": "v6.0.5", "version": "v6.0.5",
@ -744,6 +699,11 @@
"version": "v1.5.7", "version": "v1.5.7",
"date": "2025-02-27T20:04:08Z" "date": "2025-02-27T20:04:08Z"
}, },
{
"name": "docmost/docmost",
"version": "v0.8.4",
"date": "2025-02-27T16:18:45Z"
},
{ {
"name": "cloudflare/cloudflared", "name": "cloudflare/cloudflared",
"version": "2025.2.1", "version": "2025.2.1",
@ -824,6 +784,21 @@
"version": "v0.18.3", "version": "v0.18.3",
"date": "2025-02-21T20:51:12Z" "date": "2025-02-21T20:51:12Z"
}, },
{
"name": "wavelog/wavelog",
"version": "2.0.1",
"date": "2025-02-21T17:55:59Z"
},
{
"name": "grafana/grafana",
"version": "v11.5.2",
"date": "2025-02-19T00:12:27Z"
},
{
"name": "gristlabs/grist-core",
"version": "v1.4.2",
"date": "2025-02-18T21:43:36Z"
},
{ {
"name": "prometheus-pve/prometheus-pve-exporter", "name": "prometheus-pve/prometheus-pve-exporter",
"version": "v3.5.2", "version": "v3.5.2",
@ -949,11 +924,21 @@
"version": "1.7.6", "version": "1.7.6",
"date": "2025-02-01T09:50:52Z" "date": "2025-02-01T09:50:52Z"
}, },
{
"name": "hivemq/hivemq-community-edition",
"version": "2025.1",
"date": "2025-01-29T10:04:27Z"
},
{ {
"name": "rustdesk/rustdesk-server", "name": "rustdesk/rustdesk-server",
"version": "1.1.14", "version": "1.1.14",
"date": "2025-01-25T12:48:28Z" "date": "2025-01-25T12:48:28Z"
}, },
{
"name": "hansmi/prometheus-paperless-exporter",
"version": "v0.0.6",
"date": "2025-01-22T22:19:33Z"
},
{ {
"name": "crafty-controller/crafty-4", "name": "crafty-controller/crafty-4",
"version": "v4.4.7", "version": "v4.4.7",
@ -1049,6 +1034,11 @@
"version": "v1.7.3", "version": "v1.7.3",
"date": "2024-11-27T21:26:11Z" "date": "2024-11-27T21:26:11Z"
}, },
{
"name": "Bubka/2FAuth",
"version": "v5.4.3",
"date": "2024-11-27T14:02:18Z"
},
{ {
"name": "lldap/lldap", "name": "lldap/lldap",
"version": "v0.6.1", "version": "v0.6.1",
@ -1094,6 +1084,11 @@
"version": "v2024.10.22-7ca5933", "version": "v2024.10.22-7ca5933",
"date": "2024-10-22T09:58:03Z" "date": "2024-10-22T09:58:03Z"
}, },
{
"name": "aceberg/WatchYourLAN",
"version": "2.0.4",
"date": "2024-10-20T18:57:37Z"
},
{ {
"name": "NLnetLabs/unbound", "name": "NLnetLabs/unbound",
"version": "release-1.22.0", "version": "release-1.22.0",
@ -1198,5 +1193,10 @@
"name": "wger-project/wger", "name": "wger-project/wger",
"version": "2.2", "version": "2.2",
"date": "2023-12-06T12:08:09Z" "date": "2023-12-06T12:08:09Z"
},
{
"name": "sct/overseerr",
"version": "preview-test-node-18",
"date": "2023-11-06T10:21:37Z"
} }
] ]

View File

@ -1,40 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://gitea.io/
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 \
newt \
curl \
openssh \
nano \
mc \
gpg
msg_ok "Installed Dependencies"
msg_info "Installing Gitea"
$STD apk add --no-cache gitea
msg_ok "Installed Gitea"
msg_info "Enabling Gitea Service"
$STD rc-update add gitea default
msg_ok "Enabled Gitea Service"
msg_info "Starting Gitea"
$STD service gitea start
msg_ok "Started Gitea"
motd_ssh
customize

View File

@ -1,56 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://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

@ -1,69 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: kkroboth
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://fileflows.com/
# Import Functions und Setup
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 \
ffmpeg
msg_ok "Installed Dependencies"
read -r -p "Do you need the intel-media-va-driver-non-free driver for HW encoding (Debian 12 only)? <y/N> " prompt
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
msg_info "Installing Intel Hardware Acceleration (non-free)"
cat <<EOF >/etc/apt/sources.list.d/non-free.list
deb http://deb.debian.org/debian bookworm non-free non-free-firmware
deb-src http://deb.debian.org/debian bookworm non-free non-free-firmware
deb http://deb.debian.org/debian-security bookworm-security non-free non-free-firmware
deb-src http://deb.debian.org/debian-security bookworm-security non-free non-free-firmware
deb http://deb.debian.org/debian bookworm-updates non-free non-free-firmware
deb-src http://deb.debian.org/debian bookworm-updates non-free non-free-firmware
EOF
$STD apt-get update
$STD apt-get -y install {intel-media-va-driver-non-free,ocl-icd-libopencl1,intel-opencl-icd,vainfo,intel-gpu-tools}
else
msg_info "Installing Intel Hardware Acceleration"
$STD apt-get -y install {va-driver-all,ocl-icd-libopencl1,intel-opencl-icd,vainfo,intel-gpu-tools}
fi
msg_ok "Installed and Set Up Intel Hardware Acceleration"
msg_info "Installing ASP.NET Core Runtime"
curl -fsSL https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb -o packages-microsoft-prod.deb
$STD dpkg -i packages-microsoft-prod.deb
rm -rf packages-microsoft-prod.deb
$STD apt-get update
$STD apt-get install -y aspnetcore-runtime-8.0
msg_ok "Installed ASP.NET Core Runtime"
msg_info "Setup ${APPLICATION}"
$STD ln -svf /usr/bin/ffmpeg /usr/local/bin/ffmpeg
$STD ln -svf /usr/bin/ffprobe /usr/local/bin/ffprobe
temp_file=$(mktemp)
curl -fsSL https://fileflows.com/downloads/zip -o $temp_file
unzip -q -d /opt/fileflows $temp_file
(cd /opt/fileflows/Server && dotnet FileFlows.Server.dll --systemd install --root true)
systemctl enable -q --now fileflows.service
msg_ok "Setup ${APPLICATION}"
motd_ssh
customize
msg_info "Cleaning up"
rm -f $temp_file
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@ -26,11 +26,7 @@ $STD apt-get install -y nodejs
msg_ok "Installed Node.js" msg_ok "Installed Node.js"
msg_info "Installing FlowiseAI (Patience)" msg_info "Installing FlowiseAI (Patience)"
$STD npm install -g flowise \ $STD npm install -g flowise
@opentelemetry/exporter-trace-otlp-grpc \
@opentelemetry/exporter-trace-otlp-proto \
@opentelemetry/sdk-trace-node \
langchainhub
mkdir -p /opt/flowiseai mkdir -p /opt/flowiseai
wget -q https://raw.githubusercontent.com/FlowiseAI/Flowise/main/packages/server/.env.example -O /opt/flowiseai/.env wget -q https://raw.githubusercontent.com/FlowiseAI/Flowise/main/packages/server/.env.example -O /opt/flowiseai/.env
msg_ok "Installed FlowiseAI" msg_ok "Installed FlowiseAI"

View File

@ -34,7 +34,7 @@ msg_ok "Setup Golang"
msg_info "Setup ${APPLICATION} (Patience)" msg_info "Setup ${APPLICATION} (Patience)"
temp_file=$(mktemp) temp_file=$(mktemp)
RELEASE=$(curl -s https://api.github.com/repos/StarFleetCPTN/GoMFT/releases/latest | grep "tag_name" | awk '{print substr($2, 4, length($2)-5) }') 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 wget -q "https://github.com/StarFleetCPTN/GoMFT/archive/refs/tags/v${RELEASE}.tar.gz" -O $temp_file
tar -xzf $temp_file tar -xzf $temp_file
mv GoMFT-${RELEASE}/ /opt/gomft mv GoMFT-${RELEASE}/ /opt/gomft

View File

@ -43,7 +43,6 @@ After=syslog.target network.target
Type=simple Type=simple
ExecStart=/usr/local/bin/ipfs daemon ExecStart=/usr/local/bin/ipfs daemon
Restart=on-failure Restart=on-failure
Environment=HOME=/root
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF

View File

@ -16,6 +16,9 @@ update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get update $STD apt-get update
$STD apt-get -y install \ $STD apt-get -y install \
sudo \
mc \
curl \
gnupg \ gnupg \
make \ make \
gcc \ gcc \
@ -27,7 +30,7 @@ $STD apt-get -y install \
git git
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_info "Installing Python Dependencies" msg_info "Installing Python3"
$STD apt-get install -y \ $STD apt-get install -y \
python3 \ python3 \
python3-dev \ python3-dev \
@ -39,13 +42,12 @@ $STD apt-get install -y \
$STD pip3 install certbot-dns-multi $STD pip3 install certbot-dns-multi
$STD python3 -m venv /opt/certbot/ $STD python3 -m venv /opt/certbot/
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
msg_ok "Installed Python Dependencies" msg_ok "Installed Python3"
VERSION="$(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)"
msg_info "Installing Openresty" msg_info "Installing Openresty"
wget -qO - https://openresty.org/package/pubkey.gpg | gpg --dearmor -o /etc/apt/trusted.gpg.d/openresty-archive-keyring.gpg VERSION="$(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)"
echo -e "deb http://openresty.org/package/debian bullseye openresty" >/etc/apt/sources.list.d/openresty.list wget -qO - https://openresty.org/package/pubkey.gpg | gpg --dearmor -o /etc/apt/trusted.gpg.d/openresty.gpg
echo -e "deb http://openresty.org/package/debian $VERSION openresty" >/etc/apt/sources.list.d/openresty.list
$STD apt-get update $STD apt-get update
$STD apt-get -y install openresty $STD apt-get -y install openresty
msg_ok "Installed Openresty" msg_ok "Installed Openresty"
@ -61,36 +63,16 @@ msg_info "Installing pnpm"
$STD npm install -g pnpm@8.15 $STD npm install -g pnpm@8.15
msg_ok "Installed pnpm" msg_ok "Installed pnpm"
RELEASE=$(curl -s https://api.github.com/repos/NginxProxyManager/nginx-proxy-manager/releases/latest | msg_info "Setup Nginx Proxy Manager"
grep "tag_name" | RELEASE=$(curl -s https://api.github.com/repos/NginxProxyManager/nginx-proxy-manager/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
awk '{print substr($2, 3, length($2)-4) }') wget -q https://codeload.github.com/NginxProxyManager/nginx-proxy-manager/tar.gz/v${RELEASE} -O - | tar -xz
cd ./nginx-proxy-manager-${RELEASE}
read -r -p "Would you like to install an older version (v2.10.4)? <y/N> " prompt
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
msg_info "Downloading Nginx Proxy Manager v2.10.4"
wget -q https://codeload.github.com/NginxProxyManager/nginx-proxy-manager/tar.gz/v2.10.4 -O - | tar -xz
cd ./nginx-proxy-manager-2.10.4
msg_ok "Downloaded Nginx Proxy Manager v2.10.4"
else
msg_info "Downloading Nginx Proxy Manager v${RELEASE}"
wget -q https://codeload.github.com/NginxProxyManager/nginx-proxy-manager/tar.gz/v${RELEASE} -O - | tar -xz
cd ./nginx-proxy-manager-${RELEASE}
msg_ok "Downloaded Nginx Proxy Manager v${RELEASE}"
fi
msg_info "Setting up Environment"
ln -sf /usr/bin/python3 /usr/bin/python ln -sf /usr/bin/python3 /usr/bin/python
ln -sf /usr/bin/certbot /opt/certbot/bin/certbot ln -sf /usr/bin/certbot /opt/certbot/bin/certbot
ln -sf /usr/local/openresty/nginx/sbin/nginx /usr/sbin/nginx ln -sf /usr/local/openresty/nginx/sbin/nginx /usr/sbin/nginx
ln -sf /usr/local/openresty/nginx/ /etc/nginx ln -sf /usr/local/openresty/nginx/ /etc/nginx
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then sed -i "s|\"version\": \"0.0.0\"|\"version\": \"$RELEASE\"|" backend/package.json
sed -i "s|\"version\": \"0.0.0\"|\"version\": \"2.10.4\"|" backend/package.json sed -i "s|\"version\": \"0.0.0\"|\"version\": \"$RELEASE\"|" frontend/package.json
sed -i "s|\"version\": \"0.0.0\"|\"version\": \"2.10.4\"|" frontend/package.json
else
sed -i "s|\"version\": \"0.0.0\"|\"version\": \"$RELEASE\"|" backend/package.json
sed -i "s|\"version\": \"0.0.0\"|\"version\": \"$RELEASE\"|" frontend/package.json
fi
sed -i 's|"fork-me": ".*"|"fork-me": "Proxmox VE Helper-Scripts"|' frontend/js/i18n/messages.json
sed -i "s|https://github.com.*source=nginx-proxy-manager|https://helper-scripts.com|g" frontend/js/app/ui/footer/main.ejs
sed -i 's+^daemon+#daemon+g' docker/rootfs/etc/nginx/nginx.conf sed -i 's+^daemon+#daemon+g' docker/rootfs/etc/nginx/nginx.conf
NGINX_CONFS=$(find "$(pwd)" -type f -name "*.conf") NGINX_CONFS=$(find "$(pwd)" -type f -name "*.conf")
for NGINX_CONF in $NGINX_CONFS; do for NGINX_CONF in $NGINX_CONFS; do
@ -134,7 +116,7 @@ fi
mkdir -p /app/global /app/frontend/images mkdir -p /app/global /app/frontend/images
cp -r backend/* /app cp -r backend/* /app
cp -r global/* /app/global cp -r global/* /app/global
msg_ok "Set up Environment" msg_ok "Setup Nginx Proxy Manager"
msg_info "Building Frontend" msg_info "Building Frontend"
cd ./frontend cd ./frontend

View File

@ -1,7 +1,7 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG # Copyright (c) 2021-2025 tteck
# Author: tteck (tteckster) | Co-Author: Slaviša Arežina (tremor021) # Author: tteck (tteckster)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://www.qbittorrent.org/ # Source: https://www.qbittorrent.org/
@ -13,14 +13,10 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Setup qBittorrent-nox" msg_info "Installing qbittorrent-nox"
FULLRELEASE=$(curl -s https://api.github.com/repos/userdocs/qbittorrent-nox-static/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') $STD apt-get install -y qbittorrent-nox
RELEASE=$(echo $FULLRELEASE | cut -c 9-13) mkdir -p /.config/qBittorrent/
mkdir -p /opt/qbittorrent cat <<EOF >/.config/qBittorrent/qBittorrent.conf
curl -fsSL "https://github.com/userdocs/qbittorrent-nox-static/releases/download/${FULLRELEASE}/x86_64-qbittorrent-nox" -o /opt/qbittorrent/qbittorrent-nox
chmod +x /opt/qbittorrent/qbittorrent-nox
mkdir -p $HOME/.config/qBittorrent/
cat <<EOF >$HOME/.config/qBittorrent/qBittorrent.conf
[LegalNotice] [LegalNotice]
Accepted=true Accepted=true
@ -30,21 +26,16 @@ WebUI\Port=8090
WebUI\UseUPnP=false WebUI\UseUPnP=false
WebUI\Username=admin WebUI\Username=admin
EOF EOF
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt msg_ok "qbittorrent-nox"
msg_ok "Setup qBittorrent-nox"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/qbittorrent-nox.service cat <<EOF >/etc/systemd/system/qbittorrent-nox.service
[Unit] [Unit]
Description=qBittorrent client Description=qBittorrent client
After=network.target After=network.target
[Service] [Service]
Type=simple ExecStart=/usr/bin/qbittorrent-nox
User=root
ExecStart=/opt/qbittorrent/qbittorrent-nox
Restart=always Restart=always
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
EOF EOF

View File

@ -8,6 +8,7 @@
color() { color() {
# Colors # Colors
YW=$(echo "\033[33m") YW=$(echo "\033[33m")
YWB=$(echo "\033[93m")
BL=$(echo "\033[36m") BL=$(echo "\033[36m")
RD=$(echo "\033[01;31m") RD=$(echo "\033[01;31m")
GN=$(echo "\033[1;92m") GN=$(echo "\033[1;92m")
@ -29,8 +30,10 @@ color() {
INFO="${TAB}💡${TAB}${CL}" INFO="${TAB}💡${TAB}${CL}"
NETWORK="${TAB}📡${TAB}${CL}" NETWORK="${TAB}📡${TAB}${CL}"
OS="${TAB}🖥️${TAB}${CL}" OS="${TAB}🖥️${TAB}${CL}"
OSVERSION="${TAB}🌟${TAB}${CL}"
HOSTNAME="${TAB}🏠${TAB}${CL}" HOSTNAME="${TAB}🏠${TAB}${CL}"
GATEWAY="${TAB}🌐${TAB}${CL}" GATEWAY="${TAB}🌐${TAB}${CL}"
DEFAULT="${TAB}⚙️${TAB}${CL}"
} }
# Function to set STD mode based on verbosity # Function to set STD mode based on verbosity
@ -140,11 +143,6 @@ update_os() {
$STD apk update $STD apk update
$STD apk upgrade $STD apk upgrade
msg_ok "Updated Container OS" msg_ok "Updated Container OS"
msg_info "Installing core dependencies"
$STD apk update
$STD apk add newt curl openssh nano mc ncurses
msg_ok "Core dependencies installed"
} }
# This function modifies the message of the day (motd) and SSH settings # This function modifies the message of the day (motd) and SSH settings
@ -183,7 +181,7 @@ motd_ssh() {
# Validate Timezone for some LXC's # Validate Timezone for some LXC's
validate_tz() { validate_tz() {
[[ -f "/usr/share/zoneinfo/$1" ]] [[ -f "/usr/share/zoneinfo/$1" ]]
} }
# This function customizes the container and enables passwordless login for the root user # This function customizes the container and enables passwordless login for the root user
@ -193,7 +191,4 @@ customize() {
bash -c "passwd -d root" >/dev/null 2>&1 bash -c "passwd -d root" >/dev/null 2>&1
msg_ok "Customized Container" msg_ok "Customized Container"
fi fi
echo "bash -c \"\$(curl -fsSL https://github.com/community-scripts/ProxmoxVE/raw/main/ct/${app}.sh)\"" >/usr/bin/update
chmod +x /usr/bin/update
} }

View File

@ -29,13 +29,15 @@ color() {
# Formatting # Formatting
CL=$(echo "\033[m") CL=$(echo "\033[m")
UL=$(echo "\033[4m")
BOLD=$(echo "\033[1m") BOLD=$(echo "\033[1m")
BFR="\\r\\033[K"
HOLD=" " HOLD=" "
TAB=" " TAB=" "
# Icons # Icons
CM="${TAB}✔️${TAB}" CM="${TAB}✔️${TAB}${CL}"
CROSS="${TAB}✖️${TAB}" CROSS="${TAB}✖️${TAB}${CL}"
INFO="${TAB}💡${TAB}${CL}" INFO="${TAB}💡${TAB}${CL}"
OS="${TAB}🖥️${TAB}${CL}" OS="${TAB}🖥️${TAB}${CL}"
OSVERSION="${TAB}🌟${TAB}${CL}" OSVERSION="${TAB}🌟${TAB}${CL}"
@ -79,75 +81,58 @@ error_handler() {
} }
# This function displays an informational message with logging support. # This function displays an informational message with logging support.
declare -A MSG_INFO_SHOWN
SPINNER_ACTIVE=0
SPINNER_PID=""
SPINNER_MSG=""
trap 'stop_spinner' EXIT INT TERM HUP
start_spinner() { start_spinner() {
local msg="$1" local msg="$1"
local frames=(⠋ ⠙ ⠹ ⠸ ⠼ ⠴ ⠦ ⠧ ⠇ ⠏) local frames=('⠋' '⠙' '⠹' '⠸' '⠼' '⠴' '⠦' '⠧' '⠇' '⠏')
local spin_i=0 local spin_i=0
local interval=0.1 local interval=0.1
local term_width=$(tput cols)
SPINNER_MSG="$msg"
printf "\r\e[2K" >&2
{ {
while [[ "$SPINNER_ACTIVE" -eq 1 ]]; do while [ "${SPINNER_ACTIVE:-1}" -eq 1 ]; do
printf "\r\e[2K%s %b" "${frames[spin_i]}" "${YW}${SPINNER_MSG}${CL}" >&2 printf "\r\e[2K${frames[spin_i]} ${YW}%b${CL}" "$msg" >&2
spin_i=$(((spin_i + 1) % ${#frames[@]})) spin_i=$(((spin_i + 1) % ${#frames[@]}))
sleep "$interval" sleep "$interval"
done done
} & } &
SPINNER_PID=$! SPINNER_PID=$!
disown "$SPINNER_PID"
}
stop_spinner() {
if [[ ${SPINNER_PID+v} && -n "$SPINNER_PID" ]] && kill -0 "$SPINNER_PID" 2>/dev/null; then
kill "$SPINNER_PID" 2>/dev/null
sleep 0.1
kill -0 "$SPINNER_PID" 2>/dev/null && kill -9 "$SPINNER_PID" 2>/dev/null
wait "$SPINNER_PID" 2>/dev/null || true
fi
SPINNER_ACTIVE=0
unset SPINNER_PID
}
spinner_guard() {
if [[ "$SPINNER_ACTIVE" -eq 1 ]] && [[ -n "$SPINNER_PID" ]]; then
kill "$SPINNER_PID" 2>/dev/null
wait "$SPINNER_PID" 2>/dev/null || true
SPINNER_ACTIVE=0
unset SPINNER_PID
fi
} }
msg_info() { msg_info() {
local msg="$1" local msg="$1"
[[ -n "${MSG_INFO_SHOWN["$msg"]+x}" ]] && return if [ "${SPINNER_ACTIVE:-0}" -eq 1 ]; then
MSG_INFO_SHOWN["$msg"]=1 return
fi
spinner_guard
SPINNER_ACTIVE=1 SPINNER_ACTIVE=1
start_spinner "$msg" start_spinner "$msg"
} }
msg_ok() { msg_ok() {
if [ -n "${SPINNER_PID:-}" ] && ps -p "$SPINNER_PID" >/dev/null 2>&1; then
kill "$SPINNER_PID" >/dev/null 2>&1
wait "$SPINNER_PID" 2>/dev/null || true
fi
local msg="$1" local msg="$1"
stop_spinner printf "\r\e[2K${CM}${GN}%b${CL}\n" "$msg" >&2
printf "\r\e[2K%s %b\n" "${CM}" "${GN}${msg}${CL}" >&2 unset SPINNER_PID
unset MSG_INFO_SHOWN["$msg"] SPINNER_ACTIVE=0
log_message "OK" "$msg"
} }
msg_error() { msg_error() {
stop_spinner if [ -n "${SPINNER_PID:-}" ] && ps -p "$SPINNER_PID" >/dev/null 2>&1; then
kill "$SPINNER_PID" >/dev/null 2>&1
wait "$SPINNER_PID" 2>/dev/null || true
fi
local msg="$1" local msg="$1"
printf "\r\e[2K%s %b\n" "${CROSS}" "${RD}${msg}${CL}" >&2 printf "\r\e[2K${CROSS}${RD}%b${CL}\n" "$msg" >&2
unset SPINNER_PID
SPINNER_ACTIVE=0
log_message "ERROR" "$msg" log_message "ERROR" "$msg"
} }
@ -1150,7 +1135,7 @@ EOF
fi fi
if [ "$CT_TYPE" == "0" ]; then if [ "$CT_TYPE" == "0" ]; then
if [[ "$APP" == "Channels" || "$APP" == "Emby" || "$APP" == "ErsatzTV" || "$APP" == "Frigate" || "$APP" == "Jellyfin" || "$APP" == "Plex" || "$APP" == "Scrypted" || "$APP" == "Tdarr" || "$APP" == "Unmanic" || "$APP" == "Ollama" || "$APP" == "FileFlows" ]]; then if [[ "$APP" == "Channels" || "$APP" == "Emby" || "$APP" == "ErsatzTV" || "$APP" == "Frigate" || "$APP" == "Jellyfin" || "$APP" == "Plex" || "$APP" == "Scrypted" || "$APP" == "Tdarr" || "$APP" == "Unmanic" || "$APP" == "Ollama" ]]; then
cat <<EOF >>$LXC_CONFIG cat <<EOF >>$LXC_CONFIG
# VAAPI hardware transcoding # VAAPI hardware transcoding
lxc.cgroup2.devices.allow: c 226:0 rwm lxc.cgroup2.devices.allow: c 226:0 rwm
@ -1162,7 +1147,7 @@ lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,creat
EOF EOF
fi fi
else else
if [[ "$APP" == "Channels" || "$APP" == "Emby" || "$APP" == "ErsatzTV" || "$APP" == "Frigate" || "$APP" == "Jellyfin" || "$APP" == "Plex" || "$APP" == "Scrypted" || "$APP" == "Tdarr" || "$APP" == "Unmanic" || "$APP" == "Ollama" || "$APP" == "FileFlows" ]]; then if [[ "$APP" == "Channels" || "$APP" == "Emby" || "$APP" == "ErsatzTV" || "$APP" == "Frigate" || "$APP" == "Jellyfin" || "$APP" == "Plex" || "$APP" == "Scrypted" || "$APP" == "Tdarr" || "$APP" == "Unmanic" || "$APP" == "Ollama" ]]; then
if [[ -e "/dev/dri/renderD128" ]]; then if [[ -e "/dev/dri/renderD128" ]]; then
if [[ -e "/dev/dri/card0" ]]; then if [[ -e "/dev/dri/card0" ]]; then
cat <<EOF >>$LXC_CONFIG cat <<EOF >>$LXC_CONFIG
@ -1265,21 +1250,21 @@ exit_script() {
#200 exit codes indicate error in create_lxc.sh #200 exit codes indicate error in create_lxc.sh
#100 exit codes indicate error in install.func #100 exit codes indicate error in install.func
if [ $exit_code -ne 0 ]; then if [ $exit_code -ne 0 ]; then
case $exit_code in case $exit_code in
100) post_update_to_api "failed" "100: Unexpected error in create_lxc.sh" ;; 100) post_update_to_api "failed" "100: Unexpected error in create_lxc.sh" ;;
101) post_update_to_api "failed" "101: No network connection detected in create_lxc.sh" ;; 101) post_update_to_api "failed" "101: No network connection detected in create_lxc.sh" ;;
200) post_update_to_api "failed" "200: LXC creation failed in create_lxc.sh" ;; 200) post_update_to_api "failed" "200: LXC creation failed in create_lxc.sh" ;;
201) post_update_to_api "failed" "201: Invalid Storage class in create_lxc.sh" ;; 201) post_update_to_api "failed" "201: Invalid Storage class in create_lxc.sh" ;;
202) post_update_to_api "failed" "202: User aborted menu in create_lxc.sh" ;; 202) post_update_to_api "failed" "202: User aborted menu in create_lxc.sh" ;;
203) post_update_to_api "failed" "203: CTID not set in create_lxc.sh" ;; 203) post_update_to_api "failed" "203: CTID not set in create_lxc.sh" ;;
204) post_update_to_api "failed" "204: PCT_OSTYPE not set in create_lxc.sh" ;; 204) post_update_to_api "failed" "204: PCT_OSTYPE not set in create_lxc.sh" ;;
205) post_update_to_api "failed" "205: CTID cannot be less than 100 in create_lxc.sh" ;; 205) post_update_to_api "failed" "205: CTID cannot be less than 100 in create_lxc.sh" ;;
206) post_update_to_api "failed" "206: CTID already in use in create_lxc.sh" ;; 206) post_update_to_api "failed" "206: CTID already in use in create_lxc.sh" ;;
207) post_update_to_api "failed" "207: Template not found in create_lxc.sh" ;; 207) post_update_to_api "failed" "207: Template not found in create_lxc.sh" ;;
208) post_update_to_api "failed" "208: Error downloading template in create_lxc.sh" ;; 208) post_update_to_api "failed" "208: Error downloading template in create_lxc.sh" ;;
209) post_update_to_api "failed" "209: Container creation failed, but template is intact in create_lxc.sh" ;; 209) post_update_to_api "failed" "209: Container creation failed, but template is intact in create_lxc.sh" ;;
*) post_update_to_api "failed" "Unknown error, exit code: $exit_code in create_lxc.sh" ;; *) post_update_to_api "failed" "Unknown error, exit code: $exit_code in create_lxc.sh" ;;
esac esac
fi fi
} }