Compare commits

..

1 Commits

Author SHA1 Message Date
CanbiZ
95e15699fb Refactor: Blocky
Updated blocky.sh to improve update logic, including backup and restore of config, service management, and release fetching. Refactored blocky-install.sh to use fetch_and_deploy_gh_release for installation, removing manual release handling. Set Blocky as updateable in blocky.json.
2025-09-10 10:36:21 +02:00
41 changed files with 1768 additions and 2399 deletions

View File

@@ -10,55 +10,20 @@
> [!CAUTION] > [!CAUTION]
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes. Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
## 2025-09-11
### 🚀 Updated Scripts
- [core] Sort tools.func functions alphabeticaly [@tremor021](https://github.com/tremor021) ([#7569](https://github.com/community-scripts/ProxmoxVE/pull/7569))
- mobile subscription nag fix [@dvino](https://github.com/dvino) ([#7567](https://github.com/community-scripts/ProxmoxVE/pull/7567))
- #### 🐞 Bug Fixes
- alpine-install: switch to using GitHub to fetch tools when using GitHub [@burritosoftware](https://github.com/burritosoftware) ([#7566](https://github.com/community-scripts/ProxmoxVE/pull/7566))
### 🌐 Website
- #### 🐞 Bug Fixes
- Add margin-bottom to Most Viewed Scripts header to unifi UI [@BramSuurdje](https://github.com/BramSuurdje) ([#7572](https://github.com/community-scripts/ProxmoxVE/pull/7572))
## 2025-09-10 ## 2025-09-10
### 🆕 New Scripts
- Autocaliweb ([#7515](https://github.com/community-scripts/ProxmoxVE/pull/7515))
### 🚀 Updated Scripts ### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Palmr: fix #7556 [@vhsdream](https://github.com/vhsdream) ([#7558](https://github.com/community-scripts/ProxmoxVE/pull/7558))
- Wizarr: Fix DB migrations [@vhsdream](https://github.com/vhsdream) ([#7552](https://github.com/community-scripts/ProxmoxVE/pull/7552))
- fix: pmg - split no-nag script into separate config files [@MickLesk](https://github.com/MickLesk) ([#7540](https://github.com/community-scripts/ProxmoxVE/pull/7540))
- #### ✨ New Features - #### ✨ New Features
- Update Palmr to Support new v3.2.1 [@vhsdream](https://github.com/vhsdream) ([#7526](https://github.com/community-scripts/ProxmoxVE/pull/7526))
- add external installer warnings and user confirmation in several LXC's [@MickLesk](https://github.com/MickLesk) ([#7539](https://github.com/community-scripts/ProxmoxVE/pull/7539))
- Booklore: Add Bookdrop location to .env [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#7533](https://github.com/community-scripts/ProxmoxVE/pull/7533)) - Booklore: Add Bookdrop location to .env [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#7533](https://github.com/community-scripts/ProxmoxVE/pull/7533))
- #### 🔧 Refactor - #### 🔧 Refactor
- Refactor: audiobookshelf [@MickLesk](https://github.com/MickLesk) ([#7538](https://github.com/community-scripts/ProxmoxVE/pull/7538))
- Refactor: Blocky [@MickLesk](https://github.com/MickLesk) ([#7537](https://github.com/community-scripts/ProxmoxVE/pull/7537))
- Improve npmplus credential retrieval and messaging [@MickLesk](https://github.com/MickLesk) ([#7532](https://github.com/community-scripts/ProxmoxVE/pull/7532)) - Improve npmplus credential retrieval and messaging [@MickLesk](https://github.com/MickLesk) ([#7532](https://github.com/community-scripts/ProxmoxVE/pull/7532))
### 🌐 Website ### 🌐 Website
- #### 💥 Breaking Changes
- Remove Pingvin Share [@CrazyWolf13](https://github.com/CrazyWolf13) ([#7553](https://github.com/community-scripts/ProxmoxVE/pull/7553))
- #### 📝 Script Information - #### 📝 Script Information
- set updateable to true for several lxc JSON-configs [@MickLesk](https://github.com/MickLesk) ([#7534](https://github.com/community-scripts/ProxmoxVE/pull/7534)) - set updateable to true for several lxc JSON-configs [@MickLesk](https://github.com/MickLesk) ([#7534](https://github.com/community-scripts/ProxmoxVE/pull/7534))

View File

@@ -9,7 +9,7 @@ APP="audiobookshelf"
var_tags="${var_tags:-podcast;audiobook}" var_tags="${var_tags:-podcast;audiobook}"
var_cpu="${var_cpu:-2}" var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}" var_ram="${var_ram:-2048}"
var_disk="${var_disk:-5}" var_disk="${var_disk:-4}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
@@ -20,19 +20,15 @@ color
catch_errors catch_errors
function update_script() { function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -f /etc/default/audiobookshelf ]]; then if [[ ! -f /etc/apt/trusted.gpg.d/audiobookshelf-ppa.asc ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit
fi
echo "This application receives updates through the APT package manager."
exit exit
fi
msg_info "Updating $APP LXC"
$STD apt-get update
$STD apt-get -y upgrade
msg_ok "Updated $APP LXC"
exit
} }
start start

View File

@@ -1,83 +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: vhsdream
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/gelbphoenix/autocaliweb
APP="Autocaliweb"
var_tags="${var_tags:-ebooks}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-6}"
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/autocaliweb ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
setup_uv
RELEASE=$(curl -fsSL https://api.github.com/repos/gelbphoenix/autocaliweb/releases/latest | jq '.tag_name' | sed 's/^"v//;s/"$//')
if check_for_gh_release "autocaliweb" "gelbphoenix/autocaliweb"; then
msg_info "Stopping Services"
systemctl stop autocaliweb metadata-change-detector acw-ingest-service acw-auto-zipper
msg_ok "Stopped Services"
INSTALL_DIR="/opt/autocaliweb"
export VIRTUAL_ENV="${INSTALL_DIR}/venv"
$STD tar -cf ~/autocaliweb_bkp.tar "$INSTALL_DIR"/{metadata_change_logs,dirs.json,.env,scripts/ingest_watcher.sh,scripts/auto_zipper_wrapper.sh,scripts/metadata_change_detector_wrapper.sh}
fetch_and_deploy_gh_release "autocaliweb" "gelbphoenix/autocaliweb" "tarball" "latest" "/opt/autocaliweb"
msg_info "Updating ${APP}"
cd "$INSTALL_DIR"
if [[ ! -d "$VIRTUAL_ENV" ]]; then
$STD uv venv "$VIRTUAL_ENV"
fi
$STD uv sync --all-extras --active
cd "$INSTALL_DIR"/koreader/plugins
PLUGIN_DIGEST="$(find acwsync.koplugin -type f -name "*.lua" -o -name "*.json" | sort | xargs sha256sum | sha256sum | cut -d' ' -f1)"
echo "Plugin files digest: $PLUGIN_DIGEST" >acwsync.koplugin/${PLUGIN_DIGEST}.digest
echo "Build date: $(date)" >>acwsync.koplugin/${PLUGIN_DIGEST}.digest
echo "Files included:" >>acwsync.koplugin/${PLUGIN_DIGEST}.digest
$STD zip -r koplugin.zip acwsync.koplugin/
cp -r koplugin.zip "$INSTALL_DIR"/cps/static
mkdir -p "$INSTALL_DIR"/metadata_temp
$STD tar -xf ~/autocaliweb_bkp.tar --directory /
KEPUB_VERSION="$(/usr/bin/kepubify --version)"
CALIBRE_RELEASE="$(curl -s https://api.github.com/repos/kovidgoyal/calibre/releases/latest | grep -o '"tag_name": "[^"]*' | cut -d'"' -f4)"
echo "${KEPUB_VERSION#v}" >"$INSTALL_DIR"/KEPUBIFY_RELEASE
echo "${CALIBRE_RELEASE#v}" >/"$INSTALL_DIR"/CALIBRE_RELEASE
sed 's/^/v/' ~/.autocaliweb >"$INSTALL_DIR"/ACW_RELEASE
chown -R acw:acw "$INSTALL_DIR"
rm ~/autocaliweb_bkp.tar
msg_ok "Updated $APP"
msg_info "Starting Services"
systemctl start autocaliweb metadata-change-detector acw-ingest-service acw-auto-zipper
msg_ok "Started Services"
msg_ok "Updated Successfully"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8083${CL}"

View File

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

6
ct/headers/pingvin Normal file
View File

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

View File

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

View File

@@ -42,9 +42,9 @@ function update_script() {
cd /opt/palmr/apps/server cd /opt/palmr/apps/server
mv /opt/palmr.env /opt/palmr/apps/server/.env mv /opt/palmr.env /opt/palmr/apps/server/.env
$STD pnpm install $STD pnpm install
$STD npx prisma generate $STD pnpm dlx prisma generate
$STD npx prisma migrate deploy $STD pnpm dlx prisma migrate deploy
$STD npx prisma db push $STD pnpm dlx prisma db push
$STD pnpm build $STD pnpm build
cd /opt/palmr/apps/web cd /opt/palmr/apps/web

73
ct/pingvin.sh Normal file
View File

@@ -0,0 +1,73 @@
#!/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)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://stonith404.github.io/pingvin-share/introduction
APP="Pingvin"
var_tags="${var_tags:-sharing}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-8}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/pingvin-share ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/stonith404/pingvin-share/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
if [[ ! -f /opt/pingvin_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/pingvin_version.txt)" ]]; then
msg_info "Stopping Pingvin Share"
systemctl stop pm2-root.service
msg_ok "Stopped Pingvin Share"
msg_info "Updating Pingvin Share to v${RELEASE}"
cd /opt
curl -fsSL "https://github.com/stonith404/pingvin-share/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/stonith404/pingvin-share/archive/refs/tags/v${RELEASE}.zip")
$STD unzip v${RELEASE}.zip
cp -rf pingvin-share-${RELEASE}/* /opt/pingvin-share
cd /opt/pingvin-share
cd backend
$STD npm install
$STD npm run build
cd ../frontend
$STD npm install
$STD npm run build
echo "${RELEASE}" >"/opt/pingvin_version.txt"
rm -rf /opt/v${RELEASE}.zip
rm -rf /opt/pingvin-share-${RELEASE}
msg_ok "Updated Pingvin Share to v${RELEASE}"
msg_info "Starting Pingvin Share"
systemctl start pm2-root.service
msg_ok "Started Pingvin Share"
msg_ok "Updated Successfully"
exit
else
msg_ok "No update required. Pingvin Share is already at v${RELEASE}."
fi
}
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,52 +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: CrazyWolf13
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/influxdata/telegraf
APP="telegraf"
var_tags="${var_tags:-collector;metrics}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-1024}"
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 [[ ! -f /etc/telegraf/telegraf.conf ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Stopping $APP"
systemctl stop telegraf
msg_ok "Stopped $APP"
msg_info "Updating $APP"
$STD apt-get update
$STD apt-get upgrade telegraf -y
msg_ok "Updated $APP"
msg_info "Starting $APP"
systemctl start telegraf
msg_ok "Started $APP"
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}"

View File

@@ -39,23 +39,20 @@ function update_script() {
msg_info "Creating Backup" msg_info "Creating Backup"
BACKUP_FILE="/opt/wizarr_backup_$(date +%F).tar.gz" BACKUP_FILE="/opt/wizarr_backup_$(date +%F).tar.gz"
$STD tar -czf "$BACKUP_FILE" /opt/wizarr/{.env,start.sh} /opt/wizarr/database/ &>/dev/null $STD tar -czf "$BACKUP_FILE" /opt/wizarr/{.env,start.sh} /opt/wizarr/database/ &>/dev/null
rm -rf /opt/wizarr/migrations/versions/*
msg_ok "Backup Created" msg_ok "Backup Created"
fetch_and_deploy_gh_release "wizarr" "wizarrrr/wizarr" fetch_and_deploy_gh_release "wizarr" "wizarrrr/wizarr"
msg_info "Updating $APP" msg_info "Updating $APP"
cd /opt/wizarr cd /opt/wizarr
$STD /usr/local/bin/uv sync --frozen $STD /usr/local/bin/uv lock
$STD /usr/local/bin/uv run --frozen pybabel compile -d app/translations $STD /usr/local/bin/uv sync --locked
$STD /usr/local/bin/uv run pybabel compile -d app/translations
$STD npm --prefix app/static install $STD npm --prefix app/static install
$STD npm --prefix app/static run build:css $STD npm --prefix app/static run build:css
mkdir -p ./.cache mkdir -p ./.cache
$STD tar -xf "$BACKUP_FILE" --directory=/ $STD tar -xf "$BACKUP_FILE" --directory=/
$STD /usr/local/bin/uv run --frozen flask db upgrade $STD /usr/local/bin/uv run flask db upgrade
if ! grep -q 'frozen' /opt/wizarr/start.sh; then
sed -i 's/run/& --frozen/' /opt/wizarr/start.sh
fi
msg_ok "Updated $APP" msg_ok "Updated $APP"
msg_info "Starting $APP" msg_info "Starting $APP"

View File

@@ -6,7 +6,7 @@
], ],
"date_created": "2024-05-02", "date_created": "2024-05-02",
"type": "ct", "type": "ct",
"updateable": true, "updateable": false,
"privileged": false, "privileged": false,
"interface_port": 13378, "interface_port": 13378,
"documentation": "https://www.audiobookshelf.org/guides/", "documentation": "https://www.audiobookshelf.org/guides/",
@@ -21,7 +21,7 @@
"resources": { "resources": {
"cpu": 2, "cpu": 2,
"ram": 2048, "ram": 2048,
"hdd": 5, "hdd": 4,
"os": "debian", "os": "debian",
"version": "12" "version": "12"
} }

View File

@@ -1,35 +0,0 @@
{
"name": "Autocaliweb",
"slug": "autocaliweb",
"categories": [
13
],
"date_created": "2025-09-10",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 8083,
"documentation": "https://github.com/gelbphoenix/autocaliweb/wiki",
"config_path": "/etc/autocaliweb",
"website": "https://github.com/gelbphoenix/autocaliweb",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/autocaliweb.webp",
"description": "A modern web management system for eBooks, eComics and PDFs",
"install_methods": [
{
"type": "default",
"script": "ct/autocaliweb.sh",
"resources": {
"cpu": 2,
"ram": 2048,
"hdd": 6,
"os": "Debian",
"version": "12"
}
}
],
"default_credentials": {
"username": "admin",
"password": "admin123"
},
"notes": []
}

View File

@@ -33,7 +33,11 @@
}, },
"notes": [ "notes": [
{ {
"text": "To use a bind mount for storage, create symlinks to your mount for both `uploads` and `temp-uploads` in `/opt/palmr_data`, and uncomment `CUSTOM_PATH` to add the path to your bind mount", "text": "This LXC is very memory-hungry when updating; it requires at least 6GB RAM, but RAM may be reduced to as low as 2GB when running normally",
"type": "warning"
},
{
"text": "To use a bind mount for storage, create symlinks to your mount for both `uploads` and `temp-uploads` in `/opt/palmr_data`",
"type": "info" "type": "info"
}, },
{ {

View File

@@ -31,5 +31,10 @@
"username": null, "username": null,
"password": null "password": null
}, },
"notes": [] "notes": [
{
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
"type": "warning"
}
]
} }

View File

@@ -35,6 +35,10 @@
{ {
"text": "With Privileged/Unprivileged Hardware Acceleration Support", "text": "With Privileged/Unprivileged Hardware Acceleration Support",
"type": "info" "type": "info"
},
{
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
"type": "warning"
} }
] ]
} }

View File

@@ -1,48 +1,52 @@
{ {
"name": "Podman Home Assistant Container", "name": "Podman Home Assistant Container",
"slug": "podman-homeassistant", "slug": "podman-homeassistant",
"categories": [ "categories": [
16 16
], ],
"date_created": "2024-04-29", "date_created": "2024-04-29",
"type": "ct", "type": "ct",
"updateable": true, "updateable": true,
"privileged": false, "privileged": false,
"interface_port": 8123, "interface_port": 8123,
"documentation": "https://www.home-assistant.io/docs/", "documentation": "https://www.home-assistant.io/docs/",
"website": "https://www.home-assistant.io/", "website": "https://www.home-assistant.io/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/home-assistant.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/home-assistant.webp",
"config_path": "/var/lib/containers/storage/volumes/hass_config/_data", "config_path": "/var/lib/containers/storage/volumes/hass_config/_data",
"description": "A standalone Podman container-based installation of Home Assistant Core means that the Home Assistant Core software is installed inside a container managed by Podman, separate from the host operating system. This provides a flexible and scalable solution for running the software, as the container can be easily moved between host systems or isolated from other processes for security. Podman is a popular open-source tool for managing containers that is similar to Docker, but designed for use on Linux systems without a daemon.\r\n\r\n\ud83d\udec8 If the LXC is created Privileged, the script will automatically set up USB passthrough.", "description": "A standalone Podman container-based installation of Home Assistant Core means that the Home Assistant Core software is installed inside a container managed by Podman, separate from the host operating system. This provides a flexible and scalable solution for running the software, as the container can be easily moved between host systems or isolated from other processes for security. Podman is a popular open-source tool for managing containers that is similar to Docker, but designed for use on Linux systems without a daemon.\r\n\r\n\ud83d\udec8 If the LXC is created Privileged, the script will automatically set up USB passthrough.",
"install_methods": [ "install_methods": [
{ {
"type": "default", "type": "default",
"script": "ct/podman-homeassistant.sh", "script": "ct/podman-homeassistant.sh",
"resources": { "resources": {
"cpu": 2, "cpu": 2,
"ram": 2048, "ram": 2048,
"hdd": 16, "hdd": 16,
"os": "debian", "os": "debian",
"version": "12" "version": "12"
} }
} }
], ],
"default_credentials": { "default_credentials": {
"username": null, "username": null,
"password": null "password": null
},
"notes": [
{
"text": "If the LXC is created Privileged, the script will automatically set up USB passthrough.",
"type": "warning"
}, },
{ "notes": [
"text": "config path: `/var/lib/containers/storage/volumes/hass_config/_data`", {
"type": "info" "text": "If the LXC is created Privileged, the script will automatically set up USB passthrough.",
}, "type": "warning"
{ },
"text": "Options to Install Portainer or Portainer Agent", {
"type": "warning" "text": "config path: `/var/lib/containers/storage/volumes/hass_config/_data`",
} "type": "info"
] },
{
"text": "Options to Install Portainer or Portainer Agent",
"type": "warning"
},
{
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
"type": "warning"
}
]
} }

View File

@@ -1,40 +0,0 @@
{
"name": "Telegraf",
"slug": "telegraf",
"categories": [
9
],
"date_created": "2025-09-11",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": null,
"documentation": "https://docs.influxdata.com/telegraf/v1/",
"config_path": "/etc/telegraf/telegraf.conf",
"website": "https://github.com/influxdata/telegraf",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/telegraf.webp",
"description": "Telegraf collects and sends time series data from databases, systems, and IoT sensors. It has no external dependencies, is easy to install, and requires minimal memory.",
"install_methods": [
{
"type": "default",
"script": "ct/telegraf.sh",
"resources": {
"cpu": 1,
"ram": 1024,
"hdd": 4,
"os": "Debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "Make sure to configure an output for the telegraf config and start the service with `systemctl start telegraf`.",
"type": "info"
}
]
}

View File

@@ -1,149 +1,14 @@
[ [
{ {
"name": "Paymenter/Paymenter", "name": "authelia/authelia",
"version": "v1.3.2", "version": "v4.39.9",
"date": "2025-09-11T09:54:47Z" "date": "2025-09-09T22:48:24Z"
},
{
"name": "cockpit-project/cockpit",
"version": "345.2",
"date": "2025-09-11T09:06:44Z"
},
{
"name": "rcourtman/Pulse",
"version": "v4.14.0",
"date": "2025-09-05T18:28:28Z"
},
{
"name": "NLnetLabs/unbound",
"version": "release-1.24.0rc1",
"date": "2025-09-11T07:05:16Z"
},
{
"name": "emqx/emqx",
"version": "e5.10.1-rc.1",
"date": "2025-09-11T07:01:00Z"
}, },
{ {
"name": "MediaBrowser/Emby.Releases", "name": "MediaBrowser/Emby.Releases",
"version": "4.9.1.2", "version": "4.9.1.2",
"date": "2025-06-26T22:08:00Z" "date": "2025-06-26T22:08:00Z"
}, },
{
"name": "Jackett/Jackett",
"version": "v0.23.8",
"date": "2025-09-11T05:58:05Z"
},
{
"name": "zitadel/zitadel",
"version": "v4.1.4",
"date": "2025-09-11T05:20:51Z"
},
{
"name": "go-gitea/gitea",
"version": "v1.24.6",
"date": "2025-09-11T04:20:27Z"
},
{
"name": "msgbyte/tianji",
"version": "v1.24.29",
"date": "2025-09-11T02:49:06Z"
},
{
"name": "jeedom/core",
"version": "4.4.20",
"date": "2025-09-11T00:27:13Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v3.6.2",
"date": "2025-07-17T12:08:03Z"
},
{
"name": "wizarrrr/wizarr",
"version": "v2025.9.2",
"date": "2025-09-10T22:36:54Z"
},
{
"name": "cross-seed/cross-seed",
"version": "v6.13.3",
"date": "2025-09-08T21:45:15Z"
},
{
"name": "keycloak/keycloak",
"version": "26.0.15",
"date": "2025-08-27T12:12:03Z"
},
{
"name": "esphome/esphome",
"version": "2025.8.4",
"date": "2025-09-10T05:03:47Z"
},
{
"name": "TandoorRecipes/recipes",
"version": "2.2.0",
"date": "2025-09-10T18:36:56Z"
},
{
"name": "YunoHost/yunohost",
"version": "debian/12.1.22",
"date": "2025-09-10T16:40:32Z"
},
{
"name": "wazuh/wazuh",
"version": "coverity-w37-4.13.0",
"date": "2025-09-10T15:46:01Z"
},
{
"name": "fuma-nama/fumadocs",
"version": "fumadocs-mdx@11.9.1",
"date": "2025-09-10T15:26:47Z"
},
{
"name": "linuxserver/Heimdall",
"version": "v2.7.5",
"date": "2025-09-10T15:16:49Z"
},
{
"name": "nzbgetcom/nzbget",
"version": "v25.3",
"date": "2025-09-01T09:47:06Z"
},
{
"name": "mongodb/mongo",
"version": "r7.0.25-alpha0",
"date": "2025-09-10T12:13:38Z"
},
{
"name": "aceberg/WatchYourLAN",
"version": "2.1.4",
"date": "2025-09-10T12:08:09Z"
},
{
"name": "glpi-project/glpi",
"version": "10.0.20",
"date": "2025-09-10T12:00:00Z"
},
{
"name": "open-webui/open-webui",
"version": "v0.6.28",
"date": "2025-09-10T10:53:42Z"
},
{
"name": "mattermost/mattermost",
"version": "v10.5.11",
"date": "2025-09-10T07:28:51Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "v6.3.2",
"date": "2025-08-19T04:08:36Z"
},
{
"name": "authelia/authelia",
"version": "v4.39.9",
"date": "2025-09-09T22:48:24Z"
},
{ {
"name": "jenkinsci/jenkins", "name": "jenkinsci/jenkins",
"version": "jenkins-2.527", "version": "jenkins-2.527",
@@ -164,11 +29,21 @@
"version": "v1.5.1", "version": "v1.5.1",
"date": "2025-09-09T16:56:49Z" "date": "2025-09-09T16:56:49Z"
}, },
{
"name": "open-webui/open-webui",
"version": "v0.6.27",
"date": "2025-09-09T14:34:27Z"
},
{ {
"name": "chrisvel/tududi", "name": "chrisvel/tududi",
"version": "v0.81", "version": "v0.81",
"date": "2025-09-09T14:06:41Z" "date": "2025-09-09T14:06:41Z"
}, },
{
"name": "firefly-iii/firefly-iii",
"version": "v6.3.2",
"date": "2025-08-19T04:08:36Z"
},
{ {
"name": "element-hq/synapse", "name": "element-hq/synapse",
"version": "v1.138.0", "version": "v1.138.0",
@@ -194,6 +69,16 @@
"version": "0.20.2", "version": "0.20.2",
"date": "2025-09-09T06:09:25Z" "date": "2025-09-09T06:09:25Z"
}, },
{
"name": "Jackett/Jackett",
"version": "v0.22.2444",
"date": "2025-09-09T06:00:01Z"
},
{
"name": "TandoorRecipes/recipes",
"version": "2.1.2",
"date": "2025-09-09T05:55:58Z"
},
{ {
"name": "gotson/komga", "name": "gotson/komga",
"version": "1.23.4", "version": "1.23.4",
@@ -204,20 +89,45 @@
"version": "v2.16.0", "version": "v2.16.0",
"date": "2025-09-09T01:05:45Z" "date": "2025-09-09T01:05:45Z"
}, },
{
"name": "jeedom/core",
"version": "4.4.20",
"date": "2025-09-09T00:27:11Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v3.6.2",
"date": "2025-07-17T12:08:03Z"
},
{
"name": "YunoHost/yunohost",
"version": "debian/12.1.20",
"date": "2025-09-08T23:47:21Z"
},
{
"name": "mongodb/mongo",
"version": "r8.0.14-rc1",
"date": "2025-09-08T22:50:53Z"
},
{ {
"name": "diced/zipline", "name": "diced/zipline",
"version": "v4.3.1", "version": "v4.3.1",
"date": "2025-09-08T22:26:23Z" "date": "2025-09-08T22:26:23Z"
}, },
{
"name": "cross-seed/cross-seed",
"version": "v6.13.3",
"date": "2025-09-08T21:45:15Z"
},
{ {
"name": "HabitRPG/habitica", "name": "HabitRPG/habitica",
"version": "v5.40.2", "version": "v5.40.2",
"date": "2025-09-08T20:59:44Z" "date": "2025-09-08T20:59:44Z"
}, },
{ {
"name": "zerotier/ZeroTierOne", "name": "keycloak/keycloak",
"version": "1.16.0", "version": "26.0.15",
"date": "2025-09-08T20:17:36Z" "date": "2025-08-27T12:12:03Z"
}, },
{ {
"name": "booklore-app/booklore", "name": "booklore-app/booklore",
@@ -229,11 +139,26 @@
"version": "preview-OIDC", "version": "preview-OIDC",
"date": "2025-09-08T18:08:15Z" "date": "2025-09-08T18:08:15Z"
}, },
{
"name": "mattermost/mattermost",
"version": "server/public/v0.1.18",
"date": "2025-09-08T18:04:10Z"
},
{ {
"name": "immich-app/immich", "name": "immich-app/immich",
"version": "v1.141.1", "version": "v1.141.1",
"date": "2025-09-08T17:15:33Z" "date": "2025-09-08T17:15:33Z"
}, },
{
"name": "msgbyte/tianji",
"version": "v1.24.27",
"date": "2025-09-08T16:23:37Z"
},
{
"name": "Paymenter/Paymenter",
"version": "v1.3.1",
"date": "2025-09-08T15:26:01Z"
},
{ {
"name": "n8n-io/n8n", "name": "n8n-io/n8n",
"version": "n8n@1.109.2", "version": "n8n@1.109.2",
@@ -249,6 +174,11 @@
"version": "16.2", "version": "16.2",
"date": "2025-09-08T14:03:25Z" "date": "2025-09-08T14:03:25Z"
}, },
{
"name": "zitadel/zitadel",
"version": "v4.1.3",
"date": "2025-09-08T13:36:08Z"
},
{ {
"name": "theonedev/onedev", "name": "theonedev/onedev",
"version": "v12.0.10", "version": "v12.0.10",
@@ -274,6 +204,11 @@
"version": "v2.0.8", "version": "v2.0.8",
"date": "2025-09-08T08:07:18Z" "date": "2025-09-08T08:07:18Z"
}, },
{
"name": "nzbgetcom/nzbget",
"version": "v25.3",
"date": "2025-09-01T09:47:06Z"
},
{ {
"name": "webmin/webmin", "name": "webmin/webmin",
"version": "2.501", "version": "2.501",
@@ -334,11 +269,21 @@
"version": "v2.13.3.4711", "version": "v2.13.3.4711",
"date": "2025-08-28T20:06:24Z" "date": "2025-08-28T20:06:24Z"
}, },
{
"name": "rcourtman/Pulse",
"version": "v4.14.0",
"date": "2025-09-05T18:28:28Z"
},
{ {
"name": "bunkerity/bunkerweb", "name": "bunkerity/bunkerweb",
"version": "v1.6.4", "version": "v1.6.4",
"date": "2025-08-18T20:22:07Z" "date": "2025-08-18T20:22:07Z"
}, },
{
"name": "fuma-nama/fumadocs",
"version": "create-fumadocs-app@15.7.10",
"date": "2025-09-06T10:13:43Z"
},
{ {
"name": "Luligu/matterbridge", "name": "Luligu/matterbridge",
"version": "3.2.6", "version": "3.2.6",
@@ -379,6 +324,11 @@
"version": "v5.14.2", "version": "v5.14.2",
"date": "2025-09-05T17:24:12Z" "date": "2025-09-05T17:24:12Z"
}, },
{
"name": "wizarrrr/wizarr",
"version": "2025.9.0",
"date": "2025-09-05T14:21:34Z"
},
{ {
"name": "home-assistant/core", "name": "home-assistant/core",
"version": "2025.9.1", "version": "2025.9.1",
@@ -394,6 +344,11 @@
"version": "2.0.0-beta.2-temp", "version": "2.0.0-beta.2-temp",
"date": "2025-03-28T08:45:58Z" "date": "2025-03-28T08:45:58Z"
}, },
{
"name": "wazuh/wazuh",
"version": "coverity-w36-4.13.0",
"date": "2025-09-01T11:40:11Z"
},
{ {
"name": "docmost/docmost", "name": "docmost/docmost",
"version": "v0.23.0", "version": "v0.23.0",
@@ -449,6 +404,16 @@
"version": "v0.15.1", "version": "v0.15.1",
"date": "2025-09-04T10:37:23Z" "date": "2025-09-04T10:37:23Z"
}, },
{
"name": "esphome/esphome",
"version": "2025.8.3",
"date": "2025-09-04T10:09:47Z"
},
{
"name": "emqx/emqx",
"version": "v5.8.8",
"date": "2025-09-04T08:35:36Z"
},
{ {
"name": "morpheus65535/bazarr", "name": "morpheus65535/bazarr",
"version": "v1.5.3-beta.10", "version": "v1.5.3-beta.10",
@@ -474,6 +439,11 @@
"version": "6.1.15", "version": "6.1.15",
"date": "2025-09-03T14:51:37Z" "date": "2025-09-03T14:51:37Z"
}, },
{
"name": "glpi-project/glpi",
"version": "10.0.19",
"date": "2025-07-16T09:45:14Z"
},
{ {
"name": "neo4j/neo4j", "name": "neo4j/neo4j",
"version": "5.26.12", "version": "5.26.12",
@@ -484,6 +454,11 @@
"version": "v2.4.0p11", "version": "v2.4.0p11",
"date": "2025-09-03T09:58:14Z" "date": "2025-09-03T09:58:14Z"
}, },
{
"name": "cockpit-project/cockpit",
"version": "346",
"date": "2025-09-03T09:13:05Z"
},
{ {
"name": "apache/cassandra", "name": "apache/cassandra",
"version": "cassandra-4.1.10", "version": "cassandra-4.1.10",
@@ -829,6 +804,11 @@
"version": "v2.2.1", "version": "v2.2.1",
"date": "2025-08-13T19:49:01Z" "date": "2025-08-13T19:49:01Z"
}, },
{
"name": "go-gitea/gitea",
"version": "v1.24.5",
"date": "2025-08-13T16:35:52Z"
},
{ {
"name": "ellite/Wallos", "name": "ellite/Wallos",
"version": "v4.1.1", "version": "v4.1.1",
@@ -904,6 +884,11 @@
"version": "v2.0.116", "version": "v2.0.116",
"date": "2025-08-05T04:45:21Z" "date": "2025-08-05T04:45:21Z"
}, },
{
"name": "linuxserver/Heimdall",
"version": "v2.7.4",
"date": "2025-08-02T16:51:19Z"
},
{ {
"name": "inspircd/inspircd", "name": "inspircd/inspircd",
"version": "v4.8.0", "version": "v4.8.0",
@@ -969,6 +954,11 @@
"version": "v2.19.0", "version": "v2.19.0",
"date": "2025-07-27T22:25:00Z" "date": "2025-07-27T22:25:00Z"
}, },
{
"name": "aceberg/WatchYourLAN",
"version": "2.1.3",
"date": "2025-07-26T14:19:00Z"
},
{ {
"name": "heiher/hev-socks5-server", "name": "heiher/hev-socks5-server",
"version": "2.9.0", "version": "2.9.0",
@@ -999,6 +989,11 @@
"version": "v0.25.0", "version": "v0.25.0",
"date": "2025-07-16T14:57:02Z" "date": "2025-07-16T14:57:02Z"
}, },
{
"name": "NLnetLabs/unbound",
"version": "release-1.23.1",
"date": "2025-07-16T09:20:27Z"
},
{ {
"name": "sbondCo/Watcharr", "name": "sbondCo/Watcharr",
"version": "v2.1.1", "version": "v2.1.1",
@@ -1394,6 +1389,11 @@
"version": "0.10.1", "version": "0.10.1",
"date": "2024-11-10T10:25:45Z" "date": "2024-11-10T10:25:45Z"
}, },
{
"name": "zerotier/ZeroTierOne",
"version": "1.14.2",
"date": "2024-10-29T16:17:48Z"
},
{ {
"name": "CorentinTh/it-tools", "name": "CorentinTh/it-tools",
"version": "v2024.10.22-7ca5933", "version": "v2024.10.22-7ca5933",

View File

@@ -143,7 +143,7 @@ export function MostViewedScripts({ items }: { items: Category[] }) {
<div className=""> <div className="">
{mostViewedScripts.length > 0 && ( {mostViewedScripts.length > 0 && (
<> <>
<h2 className="text-lg font-semibold mb-1">Most Viewed Scripts</h2> <h2 className="text-lg font-semibold">Most Viewed Scripts</h2>
</> </>
)} )}
<div className="min-w flex w-full flex-row flex-wrap gap-4"> <div className="min-w flex w-full flex-row flex-wrap gap-4">

View File

@@ -13,18 +13,12 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing audiobookshelf"
$STD apt-get install -y ffmpeg
msg_ok "Installed Dependencies"
msg_info "Setup audiobookshelf"
curl -fsSL https://advplyr.github.io/audiobookshelf-ppa/KEY.gpg >/etc/apt/trusted.gpg.d/audiobookshelf-ppa.asc curl -fsSL https://advplyr.github.io/audiobookshelf-ppa/KEY.gpg >/etc/apt/trusted.gpg.d/audiobookshelf-ppa.asc
echo "deb [signed-by=/etc/apt/trusted.gpg.d/audiobookshelf-ppa.asc] https://advplyr.github.io/audiobookshelf-ppa ./" >/etc/apt/sources.list.d/audiobookshelf.list echo "deb [signed-by=/etc/apt/trusted.gpg.d/audiobookshelf-ppa.asc] https://advplyr.github.io/audiobookshelf-ppa ./" >/etc/apt/sources.list.d/audiobookshelf.list
$STD apt update $STD apt-get update
$STD apt install -y audiobookshelf $STD apt install audiobookshelf
echo "FFMPEG_PATH=/usr/bin/ffmpeg" >>/etc/default/audiobookshelf msg_ok "Installed audiobookshelf"
echo "FFPROBE_PATH=/usr/bin/ffprobe" >>/etc/default/audiobookshelf
msg_ok "Setup audiobookshelf"
motd_ssh motd_ssh
customize customize

View File

@@ -1,330 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2025 Community Scripts ORG
# Author: vhsdream
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/gelbphoenix/autocaliweb
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 --no-install-recommends \
python3-dev \
sqlite3 \
build-essential \
libldap2-dev \
libssl-dev \
libsasl2-dev \
imagemagick \
ghostscript \
libmagic1 \
libxi6 \
libxslt1.1 \
libxtst6 \
libxrandr2 \
libxkbfile1 \
libxcomposite1 \
libopengl0 \
libnss3 \
libxkbcommon0 \
libegl1 \
libxdamage1 \
libgl1 \
libglx-mesa0 \
xz-utils \
xdg-utils \
inotify-tools \
binutils \
unrar-free \
zip
msg_ok "Installed dependencies"
fetch_and_deploy_gh_release "kepubify" "pgaskin/kepubify" "singlefile" "latest" "/usr/bin" "kepubify-linux-64bit"
KEPUB_VERSION="$(/usr/bin/kepubify --version | awk '{print $2}')"
msg_info "Installing Calibre"
CALIBRE_RELEASE="$(curl -s https://api.github.com/repos/kovidgoyal/calibre/releases/latest | grep -o '"tag_name": "[^"]*' | cut -d'"' -f4)"
CALIBRE_VERSION=${CALIBRE_RELEASE#v}
curl -fsSL https://github.com/kovidgoyal/calibre/releases/download/${CALIBRE_RELEASE}/calibre-${CALIBRE_VERSION}-x86_64.txz -o /tmp/calibre.txz
mkdir -p /opt/calibre
$STD tar -xf /tmp/calibre.txz -C /opt/calibre
rm /tmp/calibre.txz
$STD /opt/calibre/calibre_postinstall
msg_ok "Calibre installed"
setup_uv
fetch_and_deploy_gh_release "autocaliweb" "gelbphoenix/autocaliweb" "tarball" "latest" "/opt/autocaliweb"
msg_info "Configuring Autocaliweb"
INSTALL_DIR="/opt/autocaliweb"
CONFIG_DIR="/etc/autocaliweb"
CALIBRE_LIB_DIR="/opt/calibre-library"
INGEST_DIR="/opt/acw-book-ingest"
SERVICE_USER="acw"
SERVICE_GROUP="acw"
SCRIPTS_DIR="${INSTALL_DIR}/scripts"
export VIRTUAL_ENV="${INSTALL_DIR}/venv"
mkdir -p "$CONFIG_DIR"/{.config/calibre/plugins,log_archive,.acw_conversion_tmp}
mkdir -p "$CONFIG_DIR"/processed_books/{converted,imported,failed,fixed_originals}
mkdir -p "$INSTALL_DIR"/{metadata_change_logs,metadata_temp}
mkdir -p {"$CALIBRE_LIB_DIR","$INGEST_DIR"}
echo "$CALIBRE_VERSION" >"$INSTALL_DIR"/CALIBRE_RELEASE
echo "${KEPUB_VERSION#v}" >"$INSTALL_DIR"/KEPUBIFY_RELEASE
sed 's/^/v/' ~/.autocaliweb >"$INSTALL_DIR"/ACW_RELEASE
cd "$INSTALL_DIR"
$STD uv venv "$VIRTUAL_ENV"
$STD uv sync --all-extras --active
cat <<EOF >./dirs.json
{
"ingest_folder": "$INGEST_DIR",
"calibre_library_dir": "$CALIBRE_LIB_DIR",
"tmp_conversion_dir": "$CONFIG_DIR/.acw_conversion_tmp"
}
EOF
useradd -s /usr/sbin/nologin -d "$CONFIG_DIR" -M "$SERVICE_USER"
ln -sf "$CONFIG_DIR"/.config/calibre/plugins "$CONFIG_DIR"/calibre_plugins
cat <<EOF >"$INSTALL_DIR"/.env
ACW_INSTALL_DIR=$INSTALL_DIR
ACW_CONFIG_DIR=$CONFIG_DIR
ACW_USER=$SERVICE_USER
ACW_GROUP=$SERVICE_GROUP
LIBRARY_DIR=$CALIBRE_LIB_DIR
EOF
msg_ok "Configured Autocaliweb"
msg_info "Creating ACWSync Plugin for KOReader"
cd "$INSTALL_DIR"/koreader/plugins
PLUGIN_DIGEST="$(find acwsync.koplugin -type f -name "*.lua" -o -name "*.json" | sort | xargs sha256sum | sha256sum | cut -d' ' -f1)"
echo "Plugin files digest: $PLUGIN_DIGEST" >acwsync.koplugin/${PLUGIN_DIGEST}.digest
echo "Build date: $(date)" >>acwsync.koplugin/${PLUGIN_DIGEST}.digest
echo "Files included:" >>acwsync.koplugin/${PLUGIN_DIGEST}.digest
$STD zip -r koplugin.zip acwsync.koplugin/
cp -r koplugin.zip "$INSTALL_DIR"/cps/static
msg_ok "Created ACWSync Plugin"
msg_info "Initializing databases"
KEPUBIFY_PATH=$(command -v kepubify 2>/dev/null || echo "/usr/bin/kepubify")
EBOOK_CONVERT_PATH=$(command -v ebook-convert 2>/dev/null || echo "/usr/bin/ebook-convert")
CALIBRE_BIN_DIR=$(dirname "$EBOOK_CONVERT_PATH")
curl -fsSL https://github.com/gelbphoenix/autocaliweb/raw/refs/heads/main/library/metadata.db -o "$CALIBRE_LIB_DIR"/metadata.db
curl -fsSL https://github.com/gelbphoenix/autocaliweb/raw/refs/heads/main/library/app.db -o "$CONFIG_DIR"/app.db
sqlite3 "$CONFIG_DIR/app.db" <<EOS
UPDATE settings SET
config_kepubifypath='$KEPUBIFY_PATH',
config_converterpath='$EBOOK_CONVERT_PATH',
config_binariesdir='$CALIBRE_BIN_DIR',
config_calibre_dir='$CALIBRE_LIB_DIR',
config_logfile='$CONFIG_DIR/autocaliweb.log',
config_access_logfile='$CONFIG_DIR/access.log'
WHERE 1=1;
EOS
msg_ok "Initialized databases"
msg_info "Creating scripts and service files"
# auto-ingest watcher
cat <<EOF >"$SCRIPTS_DIR"/ingest_watcher.sh
#!/bin/bash
INSTALL_PATH="$INSTALL_DIR"
WATCH_FOLDER=\$(grep -o '"ingest_folder": "[^"]*' \${INSTALL_PATH}/dirs.json | grep -o '[^"]*\$')
echo "[acw-ingest-service] Watching folder: \$WATCH_FOLDER"
# Monitor the folder for new files
/usr/bin/inotifywait -m -r --format="%e %w%f" -e close_write -e moved_to "\$WATCH_FOLDER" |
while read -r events filepath ; do
echo "[acw-ingest-service] New files detected - \$filepath - Starting Ingest Processor..."
# Use the Python interpreter from the virtual environment
\${INSTALL_PATH}/venv/bin/python \${INSTALL_PATH}/scripts/ingest_processor.py "\$filepath"
done
EOF
# auto-zipper
cat <<EOF >"$SCRIPTS_DIR"/auto_zipper_wrapper.sh
#!/bin/bash
# Source virtual environment
source ${INSTALL_DIR}/venv/bin/activate
WAKEUP="23:59"
while true; do
# Replace expr with modern Bash arithmetic (safer and less prone to parsing issues)
# fix: expr: non-integer argument and sleep: missing operand
SECS=\$(( \$(date -d "\$WAKEUP" +%s) - \$(date -d "now" +%s) ))
if [[ \$SECS -lt 0 ]]; then
SECS=\$(( \$(date -d "tomorrow \$WAKEUP" +%s) - \$(date -d "now" +%s) ))
fi
echo "[acw-auto-zipper] Next run in \$SECS seconds."
sleep \$SECS &
wait \$!
# Use virtual environment python
python ${SCRIPTS_DIR}/auto_zip.py
if [[ \$? == 1 ]]; then
echo "[acw-auto-zipper] Error occurred during script initialisation."
elif [[ \$? == 2 ]]; then
echo "[acw-auto-zipper] Error occurred while zipping today's files."
elif [[ \$? == 3 ]]; then
echo "[acw-auto-zipper] Error occurred while trying to remove zipped files."
fi
sleep 60
done
EOF
# metadata change detector
cat <<EOF >"$SCRIPTS_DIR"/metadata_change_detector_wrapper.sh
#!/bin/bash
# metadata_change_detector_wrapper.sh - Wrapper for periodic metadata enforcement
# Source virtual environment
source ${INSTALL_DIR}/venv/bin/activate
# Configuration
CHECK_INTERVAL=300 # Check every 5 minutes (300 seconds)
METADATA_LOGS_DIR="${INSTALL_DIR}/metadata_change_logs"
echo "[metadata-change-detector] Starting metadata change detector service..."
echo "[metadata-change-detector] Checking for changes every \$CHECK_INTERVAL seconds"
while true; do
# Check if there are any log files to process
if [ -d "\$METADATA_LOGS_DIR" ] && [ "\$(ls -A \$METADATA_LOGS_DIR 2>/dev/null)" ]; then
echo "[metadata-change-detector] Found metadata change logs, processing..."
# Process each log file
for log_file in "\$METADATA_LOGS_DIR"/*.json; do
if [ -f "\$log_file" ]; then
log_name=\$(basename "\$log_file")
echo "[metadata-change-detector] Processing log: \$log_name"
# Call cover_enforcer.py with the log file
${INSTALL_DIR}/venv/bin/python ${SCRIPTS_DIR}/cover_enforcer.py --log "\$log_name"
if [ \$? -eq 0 ]; then
echo "[metadata-change-detector] Successfully processed \$log_name"
else
echo "[metadata-change-detector] Error processing \$log_name"
fi
fi
done
else
echo "[metadata-change-detector] No metadata changes detected"
fi
echo "[metadata-change-detector] Sleeping for \$CHECK_INTERVAL seconds..."
sleep \$CHECK_INTERVAL
done
EOF
chmod +x "$SCRIPTS_DIR"/{ingest_watcher.sh,auto_zipper_wrapper.sh,metadata_change_detector_wrapper.sh}
chown -R "$SERVICE_USER":"$SERVICE_GROUP" {"$INSTALL_DIR","$CONFIG_DIR","$INGEST_DIR","$CALIBRE_LIB_DIR"}
cat <<EOF >/etc/systemd/system/autocaliweb.service
[Unit]
Description=Autocaliweb
After=network.target
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=$SERVICE_USER
Group=$SERVICE_GROUP
WorkingDirectory=$INSTALL_DIR
Environment=PATH=$INSTALL_DIR/venv/bin:/usr/bin:/bin
Environment=PYTHONPATH=$SCRIPTS_DIR:$INSTALL_DIR
Environment=PYTHONDONTWRITEBYTECODE=1
Environment=PYTHONUNBUFFERED=1
Environment=CALIBRE_DBPATH=$CONFIG_DIR
EnvironmentFile=$INSTALL_DIR/.env
ExecStart=$INSTALL_DIR/venv/bin/python $INSTALL_DIR/cps.py -p $CONFIG_DIR/app.db
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF >/etc/systemd/system/acw-ingest-service.service
[Unit]
Description=Autocaliweb Ingest Processor Service
After=autocaliweb.service
Requires=autocaliweb.service
[Service]
User=${SERVICE_USER}
Group=${SERVICE_GROUP}
WorkingDirectory=${INSTALL_DIR}
Environment=CALIBRE_DBPATH=${CONFIG_DIR}
Environment=HOME=${CONFIG_DIR}
ExecStart=/bin/bash ${SCRIPTS_DIR}/ingest_watcher.sh
Restart=always
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF >/etc/systemd/system/acw-auto-zipper.service
[Unit]
Description=Autocaliweb Auto Zipper Service
After=network.target
[Service]
User=${SERVICE_USER}
Group=${SERVICE_GROUP}
WorkingDirectory=${INSTALL_DIR}
Environment=CALIBRE_DBPATH=${CONFIG_DIR}
ExecStart=${SCRIPTS_DIR}/auto_zipper_wrapper.sh
Restart=always
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF >/etc/systemd/system/metadata-change-detector.service
[Unit]
Description=Autocaliweb Metadata Change Detector
After=network.target
[Service]
User=${SERVICE_USER}
Group=${SERVICE_GROUP}
WorkingDirectory=${INSTALL_DIR}
ExecStart=/bin/bash ${SCRIPTS_DIR}/metadata_change_detector_wrapper.sh
Restart=always
StandardOutput=journal
StandardError=journal
Environment=CALIBRE_DBPATH=${CONFIG_DIR}
Environment=HOME=${CONFIG_DIR}
[Install]
WantedBy=multi-user.target
EOF
systemctl -q enable --now autocaliweb acw-ingest-service acw-auto-zipper metadata-change-detector
msg_ok "Created scripts and service files"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -19,17 +19,7 @@ $STD apt-get install -y lsb-release
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
RELEASE=$(curl -fsSL https://api.github.com/repos/bunkerity/bunkerweb/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE=$(curl -fsSL https://api.github.com/repos/bunkerity/bunkerweb/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
msg_warn "WARNING: This script will run an external installer from a third-party source (install-bunkerweb.sh)." msg_info "Installing BunkerWeb v${RELEASE} (Patience)"
msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://github.com/bunkerity/bunkerweb/raw/v${RELEASE}/misc/install-bunkerweb.sh"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
fi
msg_info "Installing BunkerWeb (Patience)"
curl -fsSL -o install-bunkerweb.sh https://github.com/bunkerity/bunkerweb/raw/v${RELEASE}/misc/install-bunkerweb.sh curl -fsSL -o install-bunkerweb.sh https://github.com/bunkerity/bunkerweb/raw/v${RELEASE}/misc/install-bunkerweb.sh
chmod +x install-bunkerweb.sh chmod +x install-bunkerweb.sh
$STD ./install-bunkerweb.sh --yes $STD ./install-bunkerweb.sh --yes

View File

@@ -13,16 +13,6 @@ setting_up_container
network_check network_check
update_os update_os
msg_warn "WARNING: This script will run an external installer from a third-party source (https://casaos.zimaspace.com/)."
msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://get.casaos.io/"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
fi
msg_info "Installing CasaOS (Patience)" msg_info "Installing CasaOS (Patience)"
DOCKER_CONFIG_PATH='/etc/docker/daemon.json' DOCKER_CONFIG_PATH='/etc/docker/daemon.json'
mkdir -p $(dirname $DOCKER_CONFIG_PATH) mkdir -p $(dirname $DOCKER_CONFIG_PATH)

View File

@@ -18,17 +18,6 @@ $STD apt-get install -y chromium
$STD apt-get install -y xvfb $STD apt-get install -y xvfb
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_warn "WARNING: This script will run an external installer from a third-party source (https://getchannels.com)."
msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://getchannels.com/dvr/setup.sh"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
fi
if [[ "$CTTYPE" == "0" ]]; then if [[ "$CTTYPE" == "0" ]]; then
msg_info "Setting Up Hardware Acceleration" msg_info "Setting Up Hardware Acceleration"
$STD apt-get -y install \ $STD apt-get -y install \

View File

@@ -17,17 +17,6 @@ msg_info "Installing Dependencies"
$STD apt-get install -y ca-certificates $STD apt-get install -y ca-certificates
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_warn "WARNING: This script will run an external installer from a third-party source (https://iobroker.net/)."
msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://iobroker.net/install.sh"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
fi
NODE_VERSION="22" setup_nodejs NODE_VERSION="22" setup_nodejs
msg_info "Installing ioBroker (Patience)" msg_info "Installing ioBroker (Patience)"

View File

@@ -19,17 +19,6 @@ $STD apt-get install -y \
git git
msg_ok "Dependencies installed" msg_ok "Dependencies installed"
msg_warn "WARNING: This script will run an external installer from a third-party source (https://github.com/jeedom/)."
msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://raw.githubusercontent.com/jeedom/core/master/install/install.sh"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
fi
DEFAULT_BRANCH="master" DEFAULT_BRANCH="master"
REPO_URL="https://github.com/jeedom/core.git" REPO_URL="https://github.com/jeedom/core.git"

View File

@@ -13,32 +13,20 @@ setting_up_container
network_check network_check
update_os update_os
KASM_VERSION=$(curl -fsSL 'https://www.kasmweb.com/downloads' | grep -o 'https://kasm-static-content.s3.amazonaws.com/kasm_release_[^"]*\.tar\.gz' | head -n 1 | sed -E 's/.*release_(.*)\.tar\.gz/\1/')
msg_warn "WARNING: This script will run an external installer from a third-party source (https://www.kasmweb.com/)."
msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ install.sh inside tar.gz https://kasm-static-content.s3.amazonaws.com/kasm_release_${KASM_VERSION}.tar.gz"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
fi
msg_info "Installing Kasm Workspaces" msg_info "Installing Kasm Workspaces"
KASM_VERSION=$(curl -fsSL 'https://www.kasmweb.com/downloads' | grep -o 'https://kasm-static-content.s3.amazonaws.com/kasm_release_[^"]*\.tar\.gz' | head -n 1 | sed -E 's/.*release_(.*)\.tar\.gz/\1/')
curl -fsSL -o "/opt/kasm_release_${KASM_VERSION}.tar.gz" "https://kasm-static-content.s3.amazonaws.com/kasm_release_${KASM_VERSION}.tar.gz" curl -fsSL -o "/opt/kasm_release_${KASM_VERSION}.tar.gz" "https://kasm-static-content.s3.amazonaws.com/kasm_release_${KASM_VERSION}.tar.gz"
cd /opt cd /opt
tar -xf "kasm_release_${KASM_VERSION}.tar.gz" tar -xf "kasm_release_${KASM_VERSION}.tar.gz"
chmod +x /opt/kasm_release/install.sh chmod +x /opt/kasm_release/install.sh
printf 'y\ny\ny\n4\n' | bash /opt/kasm_release/install.sh >~/kasm-install.output 2>&1 printf 'y\ny\ny\n4\n' | bash /opt/kasm_release/install.sh > ~/kasm-install.output 2>&1
awk ' awk '
/^Kasm UI Login Credentials$/ {capture=1} /^Kasm UI Login Credentials$/ {capture=1}
capture {print} capture {print}
/^Service Registration Token$/ {in_token=1} /^Service Registration Token$/ {in_token=1}
in_token && /^-+$/ {dash_count++} in_token && /^-+$/ {dash_count++}
in_token && dash_count==2 {exit} in_token && dash_count==2 {exit}
' ~/kasm-install.output >~/kasm.creds ' ~/kasm-install.output > ~/kasm.creds
msg_ok "Installed Kasm Workspaces" msg_ok "Installed Kasm Workspaces"
motd_ssh motd_ssh

View File

@@ -13,17 +13,6 @@ setting_up_container
network_check network_check
update_os update_os
msg_warn "WARNING: This script will run an external installer from a third-party source (https://mattermost.com/)."
msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://deb.packages.mattermost.com/repo-setup.sh"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
fi
PG_VERSION="16" setup_postgresql PG_VERSION="16" setup_postgresql
msg_info "Setting up PostgreSQL" msg_info "Setting up PostgreSQL"

View File

@@ -3,7 +3,7 @@
# Copyright (c) 2021-2025 tteck # Copyright (c) 2021-2025 tteck
# Author: tteck (tteckster) # 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://nextcloudpi.com/ # Source: https://www.turnkeylinux.org/nextcloud
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color color
@@ -13,19 +13,8 @@ setting_up_container
network_check network_check
update_os update_os
msg_warn "WARNING: This script will run an external installer from a third-party source (https://nextcloudpi.com/)."
msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://raw.githubusercontent.com/nextcloud/nextcloudpi/master/install.sh"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
fi
msg_info "Installing NextCloudPi (Patience)" msg_info "Installing NextCloudPi (Patience)"
$STD bash <(curl -fsSL https://raw.githubusercontent.com/nextcloud/nextcloudpi/master/install.sh) bash <(curl -fsSL https://raw.githubusercontent.com/nextcloud/nextcloudpi/master/install.sh) >/dev/null 2>&1
msg_ok "Installed NextCloudPi" msg_ok "Installed NextCloudPi"
motd_ssh motd_ssh

View File

@@ -26,15 +26,13 @@ sed -e 's/_ENCRYPTION=true/_ENCRYPTION=false/' \
-e '/^# ENC/s/# //' \ -e '/^# ENC/s/# //' \
-e "s/ENCRYPTION_KEY=.*$/ENCRYPTION_KEY=$PALMR_KEY/" \ -e "s/ENCRYPTION_KEY=.*$/ENCRYPTION_KEY=$PALMR_KEY/" \
-e "s|file:.*$|file:$PALMR_DB\"|" \ -e "s|file:.*$|file:$PALMR_DB\"|" \
-e "\|db\"$|a\\# Uncomment below when using a reverse proxy\\ -e '/db"$/a\# Uncomment below when using reverse proxy\
# SECURE_SITE=true\\ # SECURE_SITE=true' \
# Uncomment and add your path if using symlinks for data storage\\
# CUSTOM_PATH=<path-to-your-bind-mount>" \
.env.example >./.env .env.example >./.env
$STD pnpm install $STD pnpm install
$STD npx prisma generate $STD pnpm dlx prisma generate
$STD npx prisma migrate deploy $STD pnpm dlx prisma migrate deploy
$STD npx prisma db push $STD pnpm dlx prisma db push
$STD pnpm db:seed $STD pnpm db:seed
$STD pnpm build $STD pnpm build
msg_ok "Configured palmr backend" msg_ok "Configured palmr backend"

View File

@@ -13,17 +13,6 @@ setting_up_container
network_check network_check
update_os update_os
msg_warn "WARNING: This script will run an external installer from a third-party source (https://pi-hole.net/)."
msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://install.pi-hole.net"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
fi
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y ufw $STD apt-get install -y ufw
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"

View File

@@ -0,0 +1,52 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 tteck
# Author: tteck (tteckster)
# Co-Author: michelroegl-brunner
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://stonith404.github.io/pingvin-share/introduction
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"
NODE_VERSION="22" NODE_MODULE="pm2" setup_nodejs
msg_info "Installing Pingvin Share (Patience)"
cd /opt
RELEASE=$(curl -fsSL https://api.github.com/repos/stonith404/pingvin-share/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
curl -fsSL "https://github.com/stonith404/pingvin-share/archive/refs/tags/v${RELEASE}.zip" -o "v${RELEASE}.zip"
$STD unzip v${RELEASE}.zip
echo "${RELEASE}" >"/opt/pingvin_version.txt"
mv pingvin-share-${RELEASE} /opt/pingvin-share
cd /opt/pingvin-share/backend
$STD npm install
$STD npm run build
$STD pm2 start --name="pingvin-share-backend" npm -- run prod
cd ../frontend
sed -i '/"admin.config.smtp.allow-unauthorized-certificates":\|admin.config.smtp.allow-unauthorized-certificates.description":/,+1d' ./src/i18n/translations/fr-FR.ts
$STD npm install
$STD npm run build
$STD pm2 start --name="pingvin-share-frontend" npm -- run start
$STD pm2 startup systemd
$STD pm2 save
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
msg_ok "Installed Pingvin Share"
motd_ssh
customize
msg_info "Cleaning up"
rm -rf /opt/v${RELEASE}.zip
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -13,17 +13,6 @@ setting_up_container
network_check network_check
update_os update_os
msg_warn "WARNING: This script will run an external installer from a third-party source (https://runtipi.io/)."
msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://raw.githubusercontent.com/runtipi/runtipi/master/scripts/install.sh"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
fi
msg_info "Installing Runtipi (Patience)" msg_info "Installing Runtipi (Patience)"
DOCKER_CONFIG_PATH='/etc/docker/daemon.json' DOCKER_CONFIG_PATH='/etc/docker/daemon.json'
mkdir -p "$(dirname "$DOCKER_CONFIG_PATH")" mkdir -p "$(dirname "$DOCKER_CONFIG_PATH")"

View File

@@ -1,39 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: CrazyWolf13
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/influxdata/telegraf
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Adding Telegraf key and repository"
curl -fsSL -O https://repos.influxdata.com/influxdata-archive.key
gpg --show-keys --with-fingerprint --with-colons ./influxdata-archive.key 2>&1 \
| grep -q '^fpr:\+24C975CBA61A024EE1B631787C3D57159FC2F927:$' \
&& cat influxdata-archive.key \
| gpg --dearmor \
| tee /etc/apt/keyrings/influxdata-archive.gpg > /dev/null \
&& echo 'deb [signed-by=/etc/apt/keyrings/influxdata-archive.gpg] https://repos.influxdata.com/debian stable main' \
| tee /etc/apt/sources.list.d/influxdata.list > /dev/null
msg_ok "Added Telegraf Repository"
msg_info "Installing Telegraf"
$STD apt-get update
$STD apt-get install telegraf -y
msg_ok "Installed Telegraf"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
rm /influxdata-archive.key
msg_ok "Cleaned"

View File

@@ -13,18 +13,9 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Fetching Latest Wazuh Version"
RELEASE=$(curl -fsSL https://api.github.com/repos/wazuh/wazuh/releases/latest | grep '"tag_name"' | awk -F '"' '{print substr($4, 2, length($2)-4)}') RELEASE=$(curl -fsSL https://api.github.com/repos/wazuh/wazuh/releases/latest | grep '"tag_name"' | awk -F '"' '{print substr($4, 2, length($2)-4)}')
msg_ok "Latest Wazuh Version: $RELEASE"
msg_warn "WARNING: This script will run an external installer from a third-party source (https://wazuh.com/)."
msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://packages.wazuh.com/$RELEASE/wazuh-install.sh "
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
fi
msg_info "Setup Wazuh" msg_info "Setup Wazuh"
curl -fsSL https://packages.wazuh.com/$RELEASE/wazuh-install.sh -o wazuh-install.sh curl -fsSL https://packages.wazuh.com/$RELEASE/wazuh-install.sh -o wazuh-install.sh

View File

@@ -23,12 +23,13 @@ fetch_and_deploy_gh_release "wizarr" "wizarrrr/wizarr"
msg_info "Configure ${APPLICATION}" msg_info "Configure ${APPLICATION}"
cd /opt/wizarr cd /opt/wizarr
$STD /usr/local/bin/uv sync --frozen $STD /usr/local/bin/uv lock
$STD /usr/local/bin/uv run --frozen pybabel compile -d app/translations $STD /usr/local/bin/uv sync --locked
$STD /usr/local/bin/uv run pybabel compile -d app/translations
$STD npm --prefix app/static install $STD npm --prefix app/static install
$STD npm --prefix app/static run build:css $STD npm --prefix app/static run build:css
mkdir -p ./.cache mkdir -p ./.cache
$STD /usr/local/bin/uv run --frozen flask db upgrade $STD /usr/local/bin/uv run flask db upgrade
msg_ok "Configure ${APPLICATION}" msg_ok "Configure ${APPLICATION}"
msg_info "Creating env, start script and service" msg_info "Creating env, start script and service"
@@ -42,7 +43,7 @@ EOF
cat <<EOF >/opt/wizarr/start.sh cat <<EOF >/opt/wizarr/start.sh
#!/usr/bin/env bash #!/usr/bin/env bash
uv run --frozen gunicorn \ uv run gunicorn \
--config gunicorn.conf.py \ --config gunicorn.conf.py \
--preload \ --preload \
--workers 4 \ --workers 4 \

View File

@@ -14,23 +14,11 @@ network_check
update_os update_os
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt-get install -y \ $STD apt-get install -y apt-transport-https
apt-transport-https \ $STD apt-get install -y lsb-release
lsb-release \ $STD apt-get install -y ca-certificates
ca-certificates
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
msg_warn "WARNING: This script will run an external installer from a third-party source (https://yunohost.org/)."
msg_warn "The following code is NOT maintained or audited by our repository."
msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→ https://install.yunohost.org"
echo
read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
msg_error "Aborted by user. No changes have been made."
exit 10
fi
msg_info "Installing YunoHost (Patience)" msg_info "Installing YunoHost (Patience)"
touch /etc/.pve-ignore.resolv.conf touch /etc/.pve-ignore.resolv.conf
curl -fsSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg curl -fsSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg

View File

@@ -82,7 +82,7 @@ network_check() {
update_os() { update_os() {
msg_info "Updating Container OS" msg_info "Updating Container OS"
$STD apk -U upgrade $STD apk -U upgrade
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func) source <(curl -fsSL https://git.community-scripts.org/community-scripts/ProxmoxVED/raw/branch/main/misc/tools.func)
msg_ok "Updated Container OS" msg_ok "Updated Container OS"
} }

File diff suppressed because it is too large Load Diff

View File

@@ -250,12 +250,15 @@ EOF
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "Support Subscriptions" \ whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "Support Subscriptions" \
"Supporting the software's development team is essential.\nPlease consider buying a subscription." 10 58 "Supporting the software's development team is essential.\nPlease consider buying a subscription." 10 58
msg_info "Disabling subscription nag" msg_info "Disabling subscription nag"
cat >/etc/apt/apt.conf.d/no-nag-script <<'EOF' cat <<'EOF' >/etc/apt/apt.conf.d/no-nag-script
DPkg::Post-Invoke { "if [ -s /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js ] && ! grep -q -F 'NoMoreNagging' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js; then sed -i '/data\.status/{s/\!//;s/active/NoMoreNagging/}' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js; fi"; }; DPkg::Post-Invoke {
EOF "if [ -s /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js ] && ! grep -q -F 'NoMoreNagging' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js; then
sed -i '/data\.status/{s/\\!//;s/active/NoMoreNagging/}' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js;
cat >/etc/apt/apt.conf.d/no-nag-script-pmgmanagerlib-mobile <<'EOF' fi";
DPkg::Post-Invoke { "if [ -s /usr/share/javascript/pmg-gui/js/pmgmanagerlib-mobile.js ] && ! grep -q -F 'NoMoreNagging' /usr/share/javascript/pmg-gui/js/pmgmanagerlib-mobile.js; then sed -i '/data\.status/{s/\!//;s/active/NoMoreNagging/}' /usr/share/javascript/pmg-gui/js/pmgmanagerlib-mobile.js; fi"; }; "if [ -s /usr/share/javascript/pmg-gui/js/pmgmanagerlib-mobile.js ] && ! grep -q -F 'NoMoreNagging' /usr/share/javascript/pmg-gui/js/pmgmanagerlib-mobile.js; then
sed -i '/data\.status/{s/\\!//;s/active/NoMoreNagging/}' /usr/share/javascript/pmg-gui/js/pmgmanagerlib-mobile.js;
fi";
};
EOF EOF
msg_ok "Disabled subscription nag (clear browser cache!)" msg_ok "Disabled subscription nag (clear browser cache!)"
;; ;;

View File

@@ -530,26 +530,14 @@ if [ -f "$MOBILE_TPL" ] && ! grep -q "$MARKER" "$MOBILE_TPL"; then
printf "%s\n" \ printf "%s\n" \
"$MARKER" \ "$MARKER" \
"<script>" \ "<script>" \
" function removeSubscriptionElements() {" \ " function watchAndRemoveDialog() {" \
" const dialogs = document.querySelectorAll('dialog.pwt-outer-dialog');" \ " const observer = new MutationObserver(() => {" \
" dialogs.forEach(dialog => {" \ " const dialog = document.querySelector('dialog[aria-label=\"No valid subscription\"]');" \
" const closeButton = dialog.querySelector('.fa-close');" \ " if (dialog) { dialog.remove(); console.log('Removed dialog: No valid subscription'); observer.disconnect(); }" \
" const exclamationIcon = dialog.querySelector('.fa-exclamation-triangle');" \
" const continueButton = dialog.querySelector('button');" \
" if (closeButton && exclamationIcon && continueButton) { dialog.remove(); console.log('Removed subscription dialog'); }" \
" });" \
" const cards = document.querySelectorAll('.pwt-card.pwt-p-2.pwt-d-flex.pwt-interactive.pwt-justify-content-center');" \
" cards.forEach(card => {" \
" const hasInteractiveElements = card.querySelector('button, input, a');" \
" const hasComplexStructure = card.querySelector('.pwt-grid, .pwt-flex, .pwt-button');" \
" if (!hasInteractiveElements && !hasComplexStructure) { card.remove(); console.log('Removed subscription card'); }" \
" });" \ " });" \
" observer.observe(document.body, { childList: true, subtree: true });" \
" }" \ " }" \
" const observer = new MutationObserver(removeSubscriptionElements);" \ " setTimeout(watchAndRemoveDialog, 100);" \
" observer.observe(document.body, { childList: true, subtree: true });" \
" removeSubscriptionElements();" \
" setInterval(removeSubscriptionElements, 300);" \
" setTimeout(() => {observer.disconnect();}, 10000);" \
"</script>" \ "</script>" \
"" >> "$MOBILE_TPL" "" >> "$MOBILE_TPL"
fi fi