mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-02-13 16:53:27 +01:00
Compare commits
48 Commits
fix/koille
...
MickLesk-p
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
18dba116f3 | ||
|
|
4e4defa236 | ||
|
|
c15f69712f | ||
|
|
b53a731c42 | ||
|
|
ddfe9166a1 | ||
|
|
1b1c84ad4f | ||
|
|
db69c7b0f8 | ||
|
|
53b3b4bf9f | ||
|
|
8fadcc0130 | ||
|
|
5aff8dc2f1 | ||
|
|
e7ed841361 | ||
|
|
7e49c222e5 | ||
|
|
9f31012598 | ||
|
|
811062f958 | ||
|
|
893b0bfb4a | ||
|
|
f34f994560 | ||
|
|
216b389635 | ||
|
|
d062baf8c9 | ||
|
|
e09e244c3d | ||
|
|
2645f4cf4d | ||
|
|
a0b55b6934 | ||
|
|
b263dc25fe | ||
|
|
ac308c931e | ||
|
|
a16dfb6d82 | ||
|
|
63e9bc3729 | ||
|
|
3735f9251b | ||
|
|
fc2559c702 | ||
|
|
5f2d463408 | ||
|
|
69e0dc6968 | ||
|
|
fccb8a923a | ||
|
|
53dbb9d705 | ||
|
|
236c5296b8 | ||
|
|
76c7e3a67f | ||
|
|
4dbb139c60 | ||
|
|
c581704fdd | ||
|
|
e0641d1573 | ||
|
|
058e860f6d | ||
|
|
2b87aa6d52 | ||
|
|
9640caf7bc | ||
|
|
fc044a73ca | ||
|
|
c97ccbe9bb | ||
|
|
5f69d8c315 | ||
|
|
e8cc7ce8ff | ||
|
|
1357a6f26e | ||
|
|
d2da5af858 | ||
|
|
14755d5efe | ||
|
|
927c3a7c48 | ||
|
|
9ed365e9eb |
12
.github/workflows/update-versions-github.yml
generated
vendored
12
.github/workflows/update-versions-github.yml
generated
vendored
@@ -89,9 +89,15 @@ jobs:
|
|||||||
slug=$(jq -r '.slug // empty' "$json_file" 2>/dev/null)
|
slug=$(jq -r '.slug // empty' "$json_file" 2>/dev/null)
|
||||||
[[ -z "$slug" ]] && continue
|
[[ -z "$slug" ]] && continue
|
||||||
|
|
||||||
# Find corresponding install script
|
# Find corresponding script (install script or addon script)
|
||||||
install_script="install/${slug}-install.sh"
|
install_script=""
|
||||||
[[ ! -f "$install_script" ]] && continue
|
if [[ -f "install/${slug}-install.sh" ]]; then
|
||||||
|
install_script="install/${slug}-install.sh"
|
||||||
|
elif [[ -f "tools/addon/${slug}.sh" ]]; then
|
||||||
|
install_script="tools/addon/${slug}.sh"
|
||||||
|
else
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
# Look for fetch_and_deploy_gh_release calls
|
# Look for fetch_and_deploy_gh_release calls
|
||||||
# Pattern: fetch_and_deploy_gh_release "app" "owner/repo" ["mode"] ["version"]
|
# Pattern: fetch_and_deploy_gh_release "app" "owner/repo" ["mode"] ["version"]
|
||||||
|
|||||||
62
CHANGELOG.md
62
CHANGELOG.md
@@ -401,15 +401,75 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
## 2026-02-11
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Draw.io ([#11788](https://github.com/community-scripts/ProxmoxVE/pull/11788))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Kasm: Support new version URL format without hash suffix [@MickLesk](https://github.com/MickLesk) ([#11787](https://github.com/community-scripts/ProxmoxVE/pull/11787))
|
||||||
|
- LibreTranslate: Remove Torch [@tremor021](https://github.com/tremor021) ([#11783](https://github.com/community-scripts/ProxmoxVE/pull/11783))
|
||||||
|
- Snowshare: fix update script [@TuroYT](https://github.com/TuroYT) ([#11726](https://github.com/community-scripts/ProxmoxVE/pull/11726))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- core: respect EDITOR variable for config editing [@ls-root](https://github.com/ls-root) ([#11693](https://github.com/community-scripts/ProxmoxVE/pull/11693))
|
||||||
|
|
||||||
|
### 📚 Documentation
|
||||||
|
|
||||||
|
- Fix formatting in kutt.json notes section [@tiagodenoronha](https://github.com/tiagodenoronha) ([#11774](https://github.com/community-scripts/ProxmoxVE/pull/11774))
|
||||||
|
|
||||||
|
## 2026-02-10
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Immich: Pin version to 2.5.6 [@vhsdream](https://github.com/vhsdream) ([#11775](https://github.com/community-scripts/ProxmoxVE/pull/11775))
|
||||||
|
- Libretranslate: Fix setuptools [@tremor021](https://github.com/tremor021) ([#11772](https://github.com/community-scripts/ProxmoxVE/pull/11772))
|
||||||
|
- Element Synapse: prevent systemd invoke failure during apt install [@MickLesk](https://github.com/MickLesk) ([#11758](https://github.com/community-scripts/ProxmoxVE/pull/11758))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Refactor: Slskd & Soularr [@vhsdream](https://github.com/vhsdream) ([#11674](https://github.com/community-scripts/ProxmoxVE/pull/11674))
|
||||||
|
|
||||||
|
### 🗑️ Deleted Scripts
|
||||||
|
|
||||||
|
- move paperless-exporter from LXC to addon ([#11737](https://github.com/community-scripts/ProxmoxVE/pull/11737))
|
||||||
|
|
||||||
|
### 🧰 Tools
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- feat: improve storage parsing & add guestname [@carlosmaroot](https://github.com/carlosmaroot) ([#11752](https://github.com/community-scripts/ProxmoxVE/pull/11752))
|
||||||
|
|
||||||
|
### 📂 Github
|
||||||
|
|
||||||
|
- Github-Version Workflow: include addon scripts in extraction [@MickLesk](https://github.com/MickLesk) ([#11757](https://github.com/community-scripts/ProxmoxVE/pull/11757))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- #### 📝 Script Information
|
||||||
|
|
||||||
|
- Snowshare: fix typo in config file path on website [@BirdMakingStuff](https://github.com/BirdMakingStuff) ([#11754](https://github.com/community-scripts/ProxmoxVE/pull/11754))
|
||||||
|
|
||||||
## 2026-02-09
|
## 2026-02-09
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- several scripts: add --clear to uv venv calls for uv 0.10 compatibility [@MickLesk](https://github.com/MickLesk) ([#11723](https://github.com/community-scripts/ProxmoxVE/pull/11723))
|
||||||
|
- Koillection: ensure setup_composer is in update script [@MickLesk](https://github.com/MickLesk) ([#11734](https://github.com/community-scripts/ProxmoxVE/pull/11734))
|
||||||
|
- PeaNUT: symlink server.js after update [@vhsdream](https://github.com/vhsdream) ([#11696](https://github.com/community-scripts/ProxmoxVE/pull/11696))
|
||||||
- Umlautadaptarr: use release appsettings.json instead of hardcoded copy [@MickLesk](https://github.com/MickLesk) ([#11725](https://github.com/community-scripts/ProxmoxVE/pull/11725))
|
- Umlautadaptarr: use release appsettings.json instead of hardcoded copy [@MickLesk](https://github.com/MickLesk) ([#11725](https://github.com/community-scripts/ProxmoxVE/pull/11725))
|
||||||
- tracearr: prepare for next stable release [@durzo](https://github.com/durzo) ([#11673](https://github.com/community-scripts/ProxmoxVE/pull/11673))
|
- tracearr: prepare for next stable release [@durzo](https://github.com/durzo) ([#11673](https://github.com/community-scripts/ProxmoxVE/pull/11673))
|
||||||
- PeaNUT: symlink server.js after update [@vhsdream](https://github.com/vhsdream) ([#11696](https://github.com/community-scripts/ProxmoxVE/pull/11696))
|
|
||||||
|
|
||||||
- #### ✨ New Features
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ function update_script() {
|
|||||||
cp -r /opt/adventurelog-backup/backend/server/media /opt/adventurelog/backend/server/media
|
cp -r /opt/adventurelog-backup/backend/server/media /opt/adventurelog/backend/server/media
|
||||||
cd /opt/adventurelog/backend/server
|
cd /opt/adventurelog/backend/server
|
||||||
if [[ ! -x .venv/bin/python ]]; then
|
if [[ ! -x .venv/bin/python ]]; then
|
||||||
$STD uv venv .venv
|
$STD uv venv --clear .venv
|
||||||
$STD .venv/bin/python -m ensurepip --upgrade
|
$STD .venv/bin/python -m ensurepip --upgrade
|
||||||
fi
|
fi
|
||||||
$STD .venv/bin/python -m pip install --upgrade pip
|
$STD .venv/bin/python -m pip install --upgrade pip
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ function update_script() {
|
|||||||
msg_info "Updating Autocaliweb"
|
msg_info "Updating Autocaliweb"
|
||||||
cd "$INSTALL_DIR"
|
cd "$INSTALL_DIR"
|
||||||
if [[ ! -d "$VIRTUAL_ENV" ]]; then
|
if [[ ! -d "$VIRTUAL_ENV" ]]; then
|
||||||
$STD uv venv "$VIRTUAL_ENV"
|
$STD uv venv --clear "$VIRTUAL_ENV"
|
||||||
fi
|
fi
|
||||||
$STD uv sync --all-extras --active
|
$STD uv sync --all-extras --active
|
||||||
cd "$INSTALL_DIR"/koreader/plugins
|
cd "$INSTALL_DIR"/koreader/plugins
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ function update_script() {
|
|||||||
chmod 775 /opt/bazarr /var/lib/bazarr/
|
chmod 775 /opt/bazarr /var/lib/bazarr/
|
||||||
# Always ensure venv exists
|
# Always ensure venv exists
|
||||||
if [[ ! -d /opt/bazarr/venv/ ]]; then
|
if [[ ! -d /opt/bazarr/venv/ ]]; then
|
||||||
$STD uv venv /opt/bazarr/venv --python 3.12
|
$STD uv venv --clear /opt/bazarr/venv --python 3.12
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Always check and fix service file if needed
|
# Always check and fix service file if needed
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ function update_script() {
|
|||||||
|
|
||||||
cd /opt/dispatcharr
|
cd /opt/dispatcharr
|
||||||
rm -rf .venv
|
rm -rf .venv
|
||||||
$STD uv venv
|
$STD uv venv --clear
|
||||||
$STD uv pip install -r requirements.txt --index-strategy unsafe-best-match
|
$STD uv pip install -r requirements.txt --index-strategy unsafe-best-match
|
||||||
$STD uv pip install gunicorn gevent celery redis daphne
|
$STD uv pip install gunicorn gevent celery redis daphne
|
||||||
msg_ok "Updated Dispatcharr Backend"
|
msg_ok "Updated Dispatcharr Backend"
|
||||||
@@ -144,4 +144,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}${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9191${CL}"
|
||||||
|
|||||||
58
ct/drawio.sh
Normal file
58
ct/drawio.sh
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: Slaviša Arežina (tremor021)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://www.drawio.com/
|
||||||
|
|
||||||
|
APP="DrawIO"
|
||||||
|
var_tags="${var_tags:-diagrams}"
|
||||||
|
var_cpu="${var_cpu:-1}"
|
||||||
|
var_ram="${var_ram:-2048}"
|
||||||
|
var_disk="${var_disk:-4}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-13}"
|
||||||
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
|
header_info "$APP"
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
if [[ ! -f /var/lib/tomcat11/webapps/draw.war ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_for_gh_release "drawio" "jgraph/drawio"; then
|
||||||
|
msg_info "Stopping service"
|
||||||
|
systemctl stop tomcat11
|
||||||
|
msg_ok "Service stopped"
|
||||||
|
|
||||||
|
msg_info "Updating Debian LXC"
|
||||||
|
$STD apt update
|
||||||
|
$STD apt upgrade -y
|
||||||
|
msg_ok "Updated Debian LXC"
|
||||||
|
|
||||||
|
USE_ORIGINAL_FILENAME=true fetch_and_deploy_gh_release "drawio" "jgraph/drawio" "singlefile" "latest" "/var/lib/tomcat11/webapps" "draw.war"
|
||||||
|
|
||||||
|
msg_info "Starting service"
|
||||||
|
systemctl start tomcat11
|
||||||
|
msg_ok "Service started"
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/draw${CL}"
|
||||||
@@ -61,7 +61,7 @@ function update_script() {
|
|||||||
msg_info "Updating Backend"
|
msg_info "Updating Backend"
|
||||||
cd /opt/endurain/backend
|
cd /opt/endurain/backend
|
||||||
$STD poetry export -f requirements.txt --output requirements.txt --without-hashes
|
$STD poetry export -f requirements.txt --output requirements.txt --without-hashes
|
||||||
$STD uv venv
|
$STD uv venv --clear
|
||||||
$STD uv pip install -r requirements.txt
|
$STD uv pip install -r requirements.txt
|
||||||
msg_ok "Backend Updated"
|
msg_ok "Backend Updated"
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ function update_script() {
|
|||||||
rm -rf "$VENV_PATH"
|
rm -rf "$VENV_PATH"
|
||||||
mkdir -p /opt/esphome
|
mkdir -p /opt/esphome
|
||||||
cd /opt/esphome
|
cd /opt/esphome
|
||||||
$STD uv venv "$VENV_PATH"
|
$STD uv venv --clear "$VENV_PATH"
|
||||||
$STD "$VENV_PATH/bin/python" -m ensurepip --upgrade
|
$STD "$VENV_PATH/bin/python" -m ensurepip --upgrade
|
||||||
$STD "$VENV_PATH/bin/python" -m pip install --upgrade pip
|
$STD "$VENV_PATH/bin/python" -m pip install --upgrade pip
|
||||||
$STD "$VENV_PATH/bin/python" -m pip install esphome tornado esptool
|
$STD "$VENV_PATH/bin/python" -m pip install esphome tornado esptool
|
||||||
|
|||||||
6
ct/headers/drawio
Normal file
6
ct/headers/drawio
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
____ ________
|
||||||
|
/ __ \_________ __ __/ _/ __ \
|
||||||
|
/ / / / ___/ __ `/ | /| / // // / / /
|
||||||
|
/ /_/ / / / /_/ /| |/ |/ // // /_/ /
|
||||||
|
/_____/_/ \__,_/ |__/|__/___/\____/
|
||||||
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
____ __ __ ____ __ _ _________ __ ______ __
|
|
||||||
/ __ \_________ ____ ___ ___ / /_/ /_ ___ __ _______ / __ \____ _____ ___ _____/ /__ __________ / | / / ____/ |/ / / ____/ ______ ____ _____/ /____ _____
|
|
||||||
/ /_/ / ___/ __ \/ __ `__ \/ _ \/ __/ __ \/ _ \/ / / / ___/_____/ /_/ / __ `/ __ \/ _ \/ ___/ / _ \/ ___/ ___/_____/ |/ / / __ | /_____/ __/ | |/_/ __ \/ __ \/ ___/ __/ _ \/ ___/
|
|
||||||
/ ____/ / / /_/ / / / / / / __/ /_/ / / / __/ /_/ (__ )_____/ ____/ /_/ / /_/ / __/ / / / __(__ |__ )_____/ /| / /_/ // /_____/ /____> </ /_/ / /_/ / / / /_/ __/ /
|
|
||||||
/_/ /_/ \____/_/ /_/ /_/\___/\__/_/ /_/\___/\__,_/____/ /_/ \__,_/ .___/\___/_/ /_/\___/____/____/ /_/ |_/\____//_/|_| /_____/_/|_/ .___/\____/_/ \__/\___/_/
|
|
||||||
/_/ /_/
|
|
||||||
@@ -105,7 +105,7 @@ EOF
|
|||||||
msg_ok "Image-processing libraries up to date"
|
msg_ok "Image-processing libraries up to date"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE="2.5.5"
|
RELEASE="2.5.6"
|
||||||
if check_for_gh_release "Immich" "immich-app/immich" "${RELEASE}"; then
|
if check_for_gh_release "Immich" "immich-app/immich" "${RELEASE}"; then
|
||||||
if [[ $(cat ~/.immich) > "2.5.1" ]]; then
|
if [[ $(cat ~/.immich) > "2.5.1" ]]; then
|
||||||
msg_info "Enabling Maintenance Mode"
|
msg_info "Enabling Maintenance Mode"
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ function update_script() {
|
|||||||
PYTHON_VERSION="3.12" setup_uv
|
PYTHON_VERSION="3.12" setup_uv
|
||||||
mkdir -p "$INSTALL_DIR"
|
mkdir -p "$INSTALL_DIR"
|
||||||
cd "$INSTALL_DIR"
|
cd "$INSTALL_DIR"
|
||||||
$STD uv venv .venv
|
$STD uv venv --clear .venv
|
||||||
$STD "$VENV_PYTHON" -m ensurepip --upgrade
|
$STD "$VENV_PYTHON" -m ensurepip --upgrade
|
||||||
$STD "$VENV_PYTHON" -m pip install --upgrade pip
|
$STD "$VENV_PYTHON" -m pip install --upgrade pip
|
||||||
$STD "$VENV_PYTHON" -m pip install jupyter
|
$STD "$VENV_PYTHON" -m pip install jupyter
|
||||||
|
|||||||
11
ct/kasm.sh
11
ct/kasm.sh
@@ -34,10 +34,19 @@ function update_script() {
|
|||||||
CURRENT_VERSION=$(readlink -f /opt/kasm/current | awk -F'/' '{print $4}')
|
CURRENT_VERSION=$(readlink -f /opt/kasm/current | awk -F'/' '{print $4}')
|
||||||
KASM_URL=$(curl -fsSL "https://www.kasm.com/downloads" | tr '\n' ' ' | grep -oE 'https://kasm-static-content[^"]*kasm_release_[0-9]+\.[0-9]+\.[0-9]+\.[a-z0-9]+\.tar\.gz' | head -n 1)
|
KASM_URL=$(curl -fsSL "https://www.kasm.com/downloads" | tr '\n' ' ' | grep -oE 'https://kasm-static-content[^"]*kasm_release_[0-9]+\.[0-9]+\.[0-9]+\.[a-z0-9]+\.tar\.gz' | head -n 1)
|
||||||
if [[ -z "$KASM_URL" ]]; then
|
if [[ -z "$KASM_URL" ]]; then
|
||||||
|
SERVICE_IMAGE_URL=$(curl -fsSL "https://www.kasm.com/downloads" | tr '\n' ' ' | grep -oE 'https://kasm-static-content[^"]*kasm_release_service_images_amd64_[0-9]+\.[0-9]+\.[0-9]+\.tar\.gz' | head -n 1)
|
||||||
|
if [[ -n "$SERVICE_IMAGE_URL" ]]; then
|
||||||
|
KASM_VERSION=$(echo "$SERVICE_IMAGE_URL" | sed -E 's/.*kasm_release_service_images_amd64_([0-9]+\.[0-9]+\.[0-9]+).*/\1/')
|
||||||
|
KASM_URL="https://kasm-static-content.s3.amazonaws.com/kasm_release_${KASM_VERSION}.tar.gz"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
KASM_VERSION=$(echo "$KASM_URL" | sed -E 's/.*kasm_release_([0-9]+\.[0-9]+\.[0-9]+).*/\1/')
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z "$KASM_URL" ]] || [[ -z "$KASM_VERSION" ]]; then
|
||||||
msg_error "Unable to detect latest Kasm release URL."
|
msg_error "Unable to detect latest Kasm release URL."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
KASM_VERSION=$(echo "$KASM_URL" | sed -E 's/.*kasm_release_([0-9]+\.[0-9]+\.[0-9]+).*/\1/')
|
|
||||||
msg_info "Checked for new version"
|
msg_info "Checked for new version"
|
||||||
|
|
||||||
msg_info "Removing outdated docker-compose plugin"
|
msg_info "Removing outdated docker-compose plugin"
|
||||||
|
|||||||
@@ -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-2026 community-scripts ORG
|
|
||||||
# Author: Andy Grunwald (andygrunwald)
|
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/hansmi/prometheus-paperless-exporter
|
|
||||||
|
|
||||||
APP="Prometheus-Paperless-NGX-Exporter"
|
|
||||||
var_tags="${var_tags:-monitoring;alerting}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-256}"
|
|
||||||
var_disk="${var_disk:-2}"
|
|
||||||
var_os="${var_os:-debian}"
|
|
||||||
var_version="${var_version:-13}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
header_info
|
|
||||||
check_container_storage
|
|
||||||
check_container_resources
|
|
||||||
if [[ ! -f /etc/systemd/system/prometheus-paperless-ngx-exporter.service ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
if check_for_gh_release "prom-paperless-exp" "hansmi/prometheus-paperless-exporter"; then
|
|
||||||
msg_info "Stopping Service"
|
|
||||||
systemctl stop prometheus-paperless-ngx-exporter
|
|
||||||
msg_ok "Stopped Service"
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "prom-paperless-exp" "hansmi/prometheus-paperless-exporter" "binary"
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
|
||||||
systemctl start prometheus-paperless-ngx-exporter
|
|
||||||
msg_ok "Started Service"
|
|
||||||
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}:8081/metrics${CL}"
|
|
||||||
@@ -41,7 +41,7 @@ function update_script() {
|
|||||||
rm -rf "$PVE_VENV_PATH"
|
rm -rf "$PVE_VENV_PATH"
|
||||||
mkdir -p /opt/prometheus-pve-exporter
|
mkdir -p /opt/prometheus-pve-exporter
|
||||||
cd /opt/prometheus-pve-exporter
|
cd /opt/prometheus-pve-exporter
|
||||||
$STD uv venv "$PVE_VENV_PATH"
|
$STD uv venv --clear "$PVE_VENV_PATH"
|
||||||
$STD "$PVE_VENV_PATH/bin/python" -m ensurepip --upgrade
|
$STD "$PVE_VENV_PATH/bin/python" -m ensurepip --upgrade
|
||||||
$STD "$PVE_VENV_PATH/bin/python" -m pip install --upgrade pip
|
$STD "$PVE_VENV_PATH/bin/python" -m pip install --upgrade pip
|
||||||
$STD "$PVE_VENV_PATH/bin/python" -m pip install prometheus-pve-exporter
|
$STD "$PVE_VENV_PATH/bin/python" -m pip install prometheus-pve-exporter
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ function update_script() {
|
|||||||
# Always ensure venv exists
|
# Always ensure venv exists
|
||||||
if [[ ! -d /opt/sabnzbd/venv ]]; then
|
if [[ ! -d /opt/sabnzbd/venv ]]; then
|
||||||
msg_info "Migrating SABnzbd to uv virtual environment"
|
msg_info "Migrating SABnzbd to uv virtual environment"
|
||||||
$STD uv venv /opt/sabnzbd/venv
|
$STD uv venv --clear /opt/sabnzbd/venv
|
||||||
msg_ok "Created uv venv at /opt/sabnzbd/venv"
|
msg_ok "Created uv venv at /opt/sabnzbd/venv"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ function update_script() {
|
|||||||
|
|
||||||
msg_info "Updating Scraparr"
|
msg_info "Updating Scraparr"
|
||||||
cd /opt/scraparr
|
cd /opt/scraparr
|
||||||
$STD uv venv /opt/scraparr/.venv
|
$STD uv venv --clear /opt/scraparr/.venv
|
||||||
$STD /opt/scraparr/.venv/bin/python -m ensurepip --upgrade
|
$STD /opt/scraparr/.venv/bin/python -m ensurepip --upgrade
|
||||||
$STD /opt/scraparr/.venv/bin/python -m pip install --upgrade pip
|
$STD /opt/scraparr/.venv/bin/python -m pip install --upgrade pip
|
||||||
$STD /opt/scraparr/.venv/bin/python -m pip install -r /opt/scraparr/src/scraparr/requirements.txt
|
$STD /opt/scraparr/.venv/bin/python -m pip install -r /opt/scraparr/src/scraparr/requirements.txt
|
||||||
|
|||||||
89
ct/slskd.sh
89
ct/slskd.sh
@@ -3,7 +3,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
# Copyright (c) 2021-2026 community-scripts ORG
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
# Author: vhsdream
|
# Author: vhsdream
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://github.com/slskd/slskd, https://soularr.net
|
# Source: https://github.com/slskd/slskd, https://github.com/mrusse/soularr
|
||||||
|
|
||||||
APP="slskd"
|
APP="slskd"
|
||||||
var_tags="${var_tags:-arr;p2p}"
|
var_tags="${var_tags:-arr;p2p}"
|
||||||
@@ -24,50 +24,65 @@ function update_script() {
|
|||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
if [[ ! -d /opt/slskd ]] || [[ ! -d /opt/soularr ]]; then
|
if [[ ! -d /opt/slskd ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No Slskd Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/slskd/slskd/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
if check_for_gh_release "Slskd" "slskd/slskd"; then
|
||||||
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
msg_info "Stopping Service(s)"
|
||||||
msg_info "Stopping Service"
|
systemctl stop slskd
|
||||||
systemctl stop slskd soularr.timer soularr.service
|
[[ -f /etc/systemd/system/soularr.service ]] && systemctl stop soularr.timer soularr.service
|
||||||
msg_info "Stopped Service"
|
msg_ok "Stopped Service(s)"
|
||||||
|
|
||||||
msg_info "Updating $APP to v${RELEASE}"
|
msg_info "Backing up config"
|
||||||
tmp_file=$(mktemp)
|
cp /opt/slskd/config/slskd.yml /opt/slskd.yml.bak
|
||||||
curl -fsSL "https://github.com/slskd/slskd/releases/download/${RELEASE}/slskd-${RELEASE}-linux-x64.zip" -o $tmp_file
|
msg_ok "Backed up config"
|
||||||
$STD unzip -oj $tmp_file slskd -d /opt/${APP}
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated $APP to v${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Slskd" "slskd/slskd" "prebuild" "latest" "/opt/slskd" "slskd-*-linux-x64.zip"
|
||||||
|
|
||||||
|
msg_info "Restoring config"
|
||||||
|
mv /opt/slskd.yml.bak /opt/slskd/config/slskd.yml
|
||||||
|
msg_ok "Restored config"
|
||||||
|
|
||||||
|
msg_info "Starting Service(s)"
|
||||||
systemctl start slskd
|
systemctl start slskd
|
||||||
msg_ok "Started Service"
|
[[ -f /etc/systemd/system/soularr.service ]] && systemctl start soularr.timer
|
||||||
rm -rf $tmp_file
|
msg_ok "Started Service(s)"
|
||||||
else
|
msg_ok "Updated Slskd successfully!"
|
||||||
msg_ok "No ${APP} update required. ${APP} is already at v${RELEASE}"
|
|
||||||
fi
|
fi
|
||||||
msg_info "Updating Soularr"
|
[[ -d /opt/soularr ]] && if check_for_gh_release "Soularr" "mrusse/soularr"; then
|
||||||
cp /opt/soularr/config.ini /opt/config.ini.bak
|
if systemctl is-active soularr.timer >/dev/null; then
|
||||||
cp /opt/soularr/run.sh /opt/run.sh.bak
|
msg_info "Stopping Timer and Service"
|
||||||
cd /tmp
|
systemctl stop soularr.timer soularr.service
|
||||||
rm -rf /opt/soularr
|
msg_ok "Stopped Timer and Service"
|
||||||
curl -fsSL -o main.zip https://github.com/mrusse/soularr/archive/refs/heads/main.zip
|
fi
|
||||||
$STD unzip main.zip
|
|
||||||
mv soularr-main /opt/soularr
|
|
||||||
cd /opt/soularr
|
|
||||||
$STD pip install -r requirements.txt
|
|
||||||
mv /opt/config.ini.bak /opt/soularr/config.ini
|
|
||||||
mv /opt/run.sh.bak /opt/soularr/run.sh
|
|
||||||
rm -rf /tmp/main.zip
|
|
||||||
msg_ok "Updated soularr"
|
|
||||||
|
|
||||||
msg_info "Starting soularr timer"
|
msg_info "Backing up Soularr config"
|
||||||
systemctl start soularr.timer
|
cp /opt/soularr/config.ini /opt/soularr_config.ini.bak
|
||||||
msg_ok "Started soularr timer"
|
cp /opt/soularr/run.sh /opt/soularr_run.sh.bak
|
||||||
exit
|
msg_ok "Backed up Soularr config"
|
||||||
|
|
||||||
|
PYTHON_VERSION="3.11" setup_uv
|
||||||
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Soularr" "mrusse/soularr" "tarball" "latest" "/opt/soularr"
|
||||||
|
msg_info "Updating Soularr"
|
||||||
|
cd /opt/soularr
|
||||||
|
$STD uv venv -c venv
|
||||||
|
$STD source venv/bin/activate
|
||||||
|
$STD uv pip install -r requirements.txt
|
||||||
|
deactivate
|
||||||
|
msg_ok "Updated Soularr"
|
||||||
|
|
||||||
|
msg_info "Restoring Soularr config"
|
||||||
|
mv /opt/soularr_config.ini.bak /opt/soularr/config.ini
|
||||||
|
mv /opt/soularr_run.sh.bak /opt/soularr/run.sh
|
||||||
|
msg_ok "Restored Soularr config"
|
||||||
|
|
||||||
|
msg_info "Starting Soularr Timer"
|
||||||
|
systemctl restart soularr.timer
|
||||||
|
msg_ok "Started Soularr Timer"
|
||||||
|
msg_ok "Updated Soularr successfully!"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
|||||||
@@ -33,7 +33,15 @@ function update_script() {
|
|||||||
systemctl stop snowshare
|
systemctl stop snowshare
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "snowshare" "TuroYT/snowshare" "tarball"
|
msg_info "Backing up uploads"
|
||||||
|
[ -d /opt/snowshare/uploads ] && cp -a /opt/snowshare/uploads /opt/.snowshare_uploads_backup
|
||||||
|
msg_ok "Uploads backed up"
|
||||||
|
|
||||||
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "snowshare" "TuroYT/snowshare" "tarball"
|
||||||
|
|
||||||
|
msg_info "Restoring uploads"
|
||||||
|
[ -d /opt/.snowshare_uploads_backup ] && rm -rf /opt/snowshare/uploads && cp -a /opt/.snowshare_uploads_backup /opt/snowshare/uploads
|
||||||
|
msg_ok "Uploads restored"
|
||||||
|
|
||||||
msg_info "Updating Snowshare"
|
msg_info "Updating Snowshare"
|
||||||
cd /opt/snowshare
|
cd /opt/snowshare
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ function update_script() {
|
|||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "streamlink-webui" "CrazyWolf13/streamlink-webui" "tarball"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "streamlink-webui" "CrazyWolf13/streamlink-webui" "tarball"
|
||||||
|
|
||||||
msg_info "Updating streamlink-webui"
|
msg_info "Updating streamlink-webui"
|
||||||
$STD uv venv /opt/streamlink-webui/backend/src/.venv
|
$STD uv venv --clear /opt/streamlink-webui/backend/src/.venv
|
||||||
source /opt/streamlink-webui/backend/src/.venv/bin/activate
|
source /opt/streamlink-webui/backend/src/.venv/bin/activate
|
||||||
$STD uv pip install -r /opt/streamlink-webui/backend/src/requirements.txt --python=/opt/streamlink-webui/backend/src/.venv
|
$STD uv pip install -r /opt/streamlink-webui/backend/src/requirements.txt --python=/opt/streamlink-webui/backend/src/.venv
|
||||||
cd /opt/streamlink-webui/frontend/src
|
cd /opt/streamlink-webui/frontend/src
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ function update_script() {
|
|||||||
cp -r /opt/tandoor.bak/{config,api,mediafiles,staticfiles} /opt/tandoor/
|
cp -r /opt/tandoor.bak/{config,api,mediafiles,staticfiles} /opt/tandoor/
|
||||||
mv /opt/tandoor.bak/.env /opt/tandoor/.env
|
mv /opt/tandoor.bak/.env /opt/tandoor/.env
|
||||||
cd /opt/tandoor
|
cd /opt/tandoor
|
||||||
$STD uv venv .venv --python=python3
|
$STD uv venv --clear .venv --python=python3
|
||||||
$STD uv pip install -r requirements.txt --python .venv/bin/python
|
$STD uv pip install -r requirements.txt --python .venv/bin/python
|
||||||
cd /opt/tandoor/vue3
|
cd /opt/tandoor/vue3
|
||||||
$STD yarn install
|
$STD yarn install
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ function update_script() {
|
|||||||
|
|
||||||
msg_info "Updating Warracker"
|
msg_info "Updating Warracker"
|
||||||
cd /opt/warracker/backend
|
cd /opt/warracker/backend
|
||||||
$STD uv venv .venv
|
$STD uv venv --clear .venv
|
||||||
$STD source .venv/bin/activate
|
$STD source .venv/bin/activate
|
||||||
$STD uv pip install -r requirements.txt
|
$STD uv pip install -r requirements.txt
|
||||||
msg_ok "Updated Warracker"
|
msg_ok "Updated Warracker"
|
||||||
|
|||||||
35
frontend/public/json/drawio.json
Normal file
35
frontend/public/json/drawio.json
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"name": "Draw.IO",
|
||||||
|
"slug": "drawio",
|
||||||
|
"categories": [
|
||||||
|
12
|
||||||
|
],
|
||||||
|
"date_created": "2026-02-11",
|
||||||
|
"type": "ct",
|
||||||
|
"updateable": true,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": 8080,
|
||||||
|
"documentation": "https://www.drawio.com/doc/",
|
||||||
|
"website": "https://www.drawio.com/",
|
||||||
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/draw-io.webp",
|
||||||
|
"config_path": "",
|
||||||
|
"description": "draw.io is a configurable diagramming and whiteboarding application, jointly owned and developed by draw.io Ltd (previously named JGraph) and draw.io AG.",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "ct/drawio.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": 1,
|
||||||
|
"ram": 2048,
|
||||||
|
"hdd": 4,
|
||||||
|
"os": "Debian",
|
||||||
|
"version": "13"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": null,
|
||||||
|
"password": null
|
||||||
|
},
|
||||||
|
"notes": []
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"generated": "2026-02-09T12:16:55Z",
|
"generated": "2026-02-11T18:22:25Z",
|
||||||
"versions": [
|
"versions": [
|
||||||
{
|
{
|
||||||
"slug": "2fauth",
|
"slug": "2fauth",
|
||||||
@@ -15,6 +15,13 @@
|
|||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2025-12-08T14:34:55Z"
|
"date": "2025-12-08T14:34:55Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"slug": "adguardhome-sync",
|
||||||
|
"repo": "bakito/adguardhome-sync",
|
||||||
|
"version": "v0.8.2",
|
||||||
|
"pinned": false,
|
||||||
|
"date": "2025-10-24T17:13:47Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"slug": "adventurelog",
|
"slug": "adventurelog",
|
||||||
"repo": "seanmorley15/adventurelog",
|
"repo": "seanmorley15/adventurelog",
|
||||||
@@ -200,16 +207,16 @@
|
|||||||
{
|
{
|
||||||
"slug": "comfyui",
|
"slug": "comfyui",
|
||||||
"repo": "comfyanonymous/ComfyUI",
|
"repo": "comfyanonymous/ComfyUI",
|
||||||
"version": "v0.12.3",
|
"version": "v0.13.0",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-05T07:04:07Z"
|
"date": "2026-02-10T20:27:38Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "commafeed",
|
"slug": "commafeed",
|
||||||
"repo": "Athou/commafeed",
|
"repo": "Athou/commafeed",
|
||||||
"version": "6.1.1",
|
"version": "6.2.0",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-01-26T15:14:16Z"
|
"date": "2026-02-09T19:44:58Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "configarr",
|
"slug": "configarr",
|
||||||
@@ -235,16 +242,16 @@
|
|||||||
{
|
{
|
||||||
"slug": "cronicle",
|
"slug": "cronicle",
|
||||||
"repo": "jhuckaby/Cronicle",
|
"repo": "jhuckaby/Cronicle",
|
||||||
"version": "v0.9.105",
|
"version": "v0.9.106",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-05T18:16:11Z"
|
"date": "2026-02-11T17:11:46Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "cryptpad",
|
"slug": "cryptpad",
|
||||||
"repo": "cryptpad/cryptpad",
|
"repo": "cryptpad/cryptpad",
|
||||||
"version": "2025.9.0",
|
"version": "2026.2.0",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2025-10-22T10:06:29Z"
|
"date": "2026-02-11T15:39:05Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "dawarich",
|
"slug": "dawarich",
|
||||||
@@ -256,44 +263,51 @@
|
|||||||
{
|
{
|
||||||
"slug": "discopanel",
|
"slug": "discopanel",
|
||||||
"repo": "nickheyer/discopanel",
|
"repo": "nickheyer/discopanel",
|
||||||
"version": "v1.0.35",
|
"version": "v1.0.36",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-02T05:20:12Z"
|
"date": "2026-02-09T21:15:44Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "dispatcharr",
|
"slug": "dispatcharr",
|
||||||
"repo": "Dispatcharr/Dispatcharr",
|
"repo": "Dispatcharr/Dispatcharr",
|
||||||
"version": "v0.18.1",
|
"version": "v0.19.0",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-01-27T17:09:11Z"
|
"date": "2026-02-10T21:18:10Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "docmost",
|
"slug": "docmost",
|
||||||
"repo": "docmost/docmost",
|
"repo": "docmost/docmost",
|
||||||
"version": "v0.25.2",
|
"version": "v0.25.3",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-06T19:50:55Z"
|
"date": "2026-02-10T02:58:23Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "domain-locker",
|
"slug": "domain-locker",
|
||||||
"repo": "Lissy93/domain-locker",
|
"repo": "Lissy93/domain-locker",
|
||||||
"version": "v0.1.2",
|
"version": "v0.1.3",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2025-11-14T22:08:23Z"
|
"date": "2026-02-11T10:03:32Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "domain-monitor",
|
"slug": "domain-monitor",
|
||||||
"repo": "Hosteroid/domain-monitor",
|
"repo": "Hosteroid/domain-monitor",
|
||||||
"version": "v1.1.2",
|
"version": "v1.1.3",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-09T06:29:34Z"
|
"date": "2026-02-11T15:48:18Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "donetick",
|
"slug": "donetick",
|
||||||
"repo": "donetick/donetick",
|
"repo": "donetick/donetick",
|
||||||
"version": "v0.1.64",
|
"version": "v0.1.71",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2025-10-03T05:18:24Z"
|
"date": "2026-02-11T06:01:13Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "drawio",
|
||||||
|
"repo": "jgraph/drawio",
|
||||||
|
"version": "v29.3.6",
|
||||||
|
"pinned": false,
|
||||||
|
"date": "2026-01-28T18:25:02Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "duplicati",
|
"slug": "duplicati",
|
||||||
@@ -319,9 +333,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "endurain",
|
"slug": "endurain",
|
||||||
"repo": "endurain-project/endurain",
|
"repo": "endurain-project/endurain",
|
||||||
"version": "v0.17.3",
|
"version": "v0.17.4",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-01-23T22:02:05Z"
|
"date": "2026-02-11T04:54:22Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "ersatztv",
|
"slug": "ersatztv",
|
||||||
@@ -533,6 +547,13 @@
|
|||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-07T04:44:20Z"
|
"date": "2026-02-07T04:44:20Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"slug": "immich-public-proxy",
|
||||||
|
"repo": "alangrainger/immich-public-proxy",
|
||||||
|
"version": "v1.15.1",
|
||||||
|
"pinned": false,
|
||||||
|
"date": "2026-01-26T08:04:27Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"slug": "inspircd",
|
"slug": "inspircd",
|
||||||
"repo": "inspircd/inspircd",
|
"repo": "inspircd/inspircd",
|
||||||
@@ -557,9 +578,16 @@
|
|||||||
{
|
{
|
||||||
"slug": "jackett",
|
"slug": "jackett",
|
||||||
"repo": "Jackett/Jackett",
|
"repo": "Jackett/Jackett",
|
||||||
"version": "v0.24.1074",
|
"version": "v0.24.1094",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-09T06:01:19Z"
|
"date": "2026-02-11T06:01:16Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"slug": "jellystat",
|
||||||
|
"repo": "CyferShepard/Jellystat",
|
||||||
|
"version": "V1.1.8",
|
||||||
|
"pinned": false,
|
||||||
|
"date": "2026-02-08T08:15:00Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "joplin-server",
|
"slug": "joplin-server",
|
||||||
@@ -599,9 +627,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "keycloak",
|
"slug": "keycloak",
|
||||||
"repo": "keycloak/keycloak",
|
"repo": "keycloak/keycloak",
|
||||||
"version": "26.5.2",
|
"version": "26.5.3",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-01-23T14:26:58Z"
|
"date": "2026-02-10T07:30:08Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "kimai",
|
"slug": "kimai",
|
||||||
@@ -634,9 +662,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "kometa",
|
"slug": "kometa",
|
||||||
"repo": "Kometa-Team/Kometa",
|
"repo": "Kometa-Team/Kometa",
|
||||||
"version": "v2.2.2",
|
"version": "v2.3.0",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2025-10-06T21:31:07Z"
|
"date": "2026-02-09T21:26:56Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "komga",
|
"slug": "komga",
|
||||||
@@ -683,9 +711,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "libretranslate",
|
"slug": "libretranslate",
|
||||||
"repo": "LibreTranslate/LibreTranslate",
|
"repo": "LibreTranslate/LibreTranslate",
|
||||||
"version": "v1.8.4",
|
"version": "v1.9.0",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-02T17:45:16Z"
|
"date": "2026-02-10T19:05:48Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "lidarr",
|
"slug": "lidarr",
|
||||||
@@ -718,9 +746,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "lubelogger",
|
"slug": "lubelogger",
|
||||||
"repo": "hargata/lubelog",
|
"repo": "hargata/lubelog",
|
||||||
"version": "v1.5.8",
|
"version": "v1.6.0",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-01-26T18:18:03Z"
|
"date": "2026-02-10T20:16:32Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "mafl",
|
"slug": "mafl",
|
||||||
@@ -739,9 +767,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "mail-archiver",
|
"slug": "mail-archiver",
|
||||||
"repo": "s1t5/mail-archiver",
|
"repo": "s1t5/mail-archiver",
|
||||||
"version": "2601.3",
|
"version": "2602.1",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-01-25T12:52:24Z"
|
"date": "2026-02-11T06:23:11Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "managemydamnlife",
|
"slug": "managemydamnlife",
|
||||||
@@ -753,9 +781,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "manyfold",
|
"slug": "manyfold",
|
||||||
"repo": "manyfold3d/manyfold",
|
"repo": "manyfold3d/manyfold",
|
||||||
"version": "v0.132.0",
|
"version": "v0.132.1",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-01-29T13:53:21Z"
|
"date": "2026-02-09T22:02:28Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "mealie",
|
"slug": "mealie",
|
||||||
@@ -767,9 +795,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "mediamanager",
|
"slug": "mediamanager",
|
||||||
"repo": "maxdorninger/MediaManager",
|
"repo": "maxdorninger/MediaManager",
|
||||||
"version": "v1.12.2",
|
"version": "v1.12.3",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-08T19:18:29Z"
|
"date": "2026-02-11T16:45:40Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "mediamtx",
|
"slug": "mediamtx",
|
||||||
@@ -816,9 +844,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "myip",
|
"slug": "myip",
|
||||||
"repo": "jason5ng32/MyIP",
|
"repo": "jason5ng32/MyIP",
|
||||||
"version": "v5.2.0",
|
"version": "v5.2.1",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-01-05T05:56:57Z"
|
"date": "2026-02-10T07:38:47Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "mylar3",
|
"slug": "mylar3",
|
||||||
@@ -837,9 +865,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "navidrome",
|
"slug": "navidrome",
|
||||||
"repo": "navidrome/navidrome",
|
"repo": "navidrome/navidrome",
|
||||||
"version": "v0.60.2",
|
"version": "v0.60.3",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-07T19:42:33Z"
|
"date": "2026-02-10T23:55:04Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "netbox",
|
"slug": "netbox",
|
||||||
@@ -848,6 +876,13 @@
|
|||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-03T13:54:26Z"
|
"date": "2026-02-03T13:54:26Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"slug": "nextcloud-exporter",
|
||||||
|
"repo": "xperimental/nextcloud-exporter",
|
||||||
|
"version": "v0.9.0",
|
||||||
|
"pinned": false,
|
||||||
|
"date": "2025-10-12T20:03:10Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"slug": "nginx-ui",
|
"slug": "nginx-ui",
|
||||||
"repo": "0xJacky/nginx-ui",
|
"repo": "0xJacky/nginx-ui",
|
||||||
@@ -1012,16 +1047,16 @@
|
|||||||
{
|
{
|
||||||
"slug": "pelican-panel",
|
"slug": "pelican-panel",
|
||||||
"repo": "pelican-dev/panel",
|
"repo": "pelican-dev/panel",
|
||||||
"version": "v1.0.0-beta31",
|
"version": "v1.0.0-beta32",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-01-18T22:43:24Z"
|
"date": "2026-02-09T22:15:44Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "pelican-wings",
|
"slug": "pelican-wings",
|
||||||
"repo": "pelican-dev/wings",
|
"repo": "pelican-dev/wings",
|
||||||
"version": "v1.0.0-beta22",
|
"version": "v1.0.0-beta23",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-01-18T22:38:36Z"
|
"date": "2026-02-09T22:10:26Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "pf2etools",
|
"slug": "pf2etools",
|
||||||
@@ -1037,12 +1072,19 @@
|
|||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2025-12-01T05:07:31Z"
|
"date": "2025-12-01T05:07:31Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"slug": "pihole-exporter",
|
||||||
|
"repo": "eko/pihole-exporter",
|
||||||
|
"version": "v1.2.0",
|
||||||
|
"pinned": false,
|
||||||
|
"date": "2025-07-29T19:15:37Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"slug": "planka",
|
"slug": "planka",
|
||||||
"repo": "plankanban/planka",
|
"repo": "plankanban/planka",
|
||||||
"version": "v2.0.0-rc.4",
|
"version": "v2.0.0",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2025-09-04T12:41:17Z"
|
"date": "2026-02-11T13:50:10Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "plant-it",
|
"slug": "plant-it",
|
||||||
@@ -1131,9 +1173,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "pulse",
|
"slug": "pulse",
|
||||||
"repo": "rcourtman/Pulse",
|
"repo": "rcourtman/Pulse",
|
||||||
"version": "v5.1.5",
|
"version": "v5.1.9",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-08T12:19:53Z"
|
"date": "2026-02-11T15:34:40Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "pve-scripts-local",
|
"slug": "pve-scripts-local",
|
||||||
@@ -1149,6 +1191,13 @@
|
|||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2025-11-19T23:54:34Z"
|
"date": "2025-11-19T23:54:34Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"slug": "qbittorrent-exporter",
|
||||||
|
"repo": "martabal/qbittorrent-exporter",
|
||||||
|
"version": "v1.13.2",
|
||||||
|
"pinned": false,
|
||||||
|
"date": "2025-12-13T22:59:03Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"slug": "qdrant",
|
"slug": "qdrant",
|
||||||
"repo": "qdrant/qdrant",
|
"repo": "qdrant/qdrant",
|
||||||
@@ -1236,16 +1285,16 @@
|
|||||||
{
|
{
|
||||||
"slug": "scanopy",
|
"slug": "scanopy",
|
||||||
"repo": "scanopy/scanopy",
|
"repo": "scanopy/scanopy",
|
||||||
"version": "v0.14.3",
|
"version": "v0.14.4",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-04T01:41:01Z"
|
"date": "2026-02-10T03:57:28Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "scraparr",
|
"slug": "scraparr",
|
||||||
"repo": "thecfu/scraparr",
|
"repo": "thecfu/scraparr",
|
||||||
"version": "v2.2.5",
|
"version": "v3.0.1",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2025-10-07T12:34:31Z"
|
"date": "2026-02-11T17:42:23Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "seelf",
|
"slug": "seelf",
|
||||||
@@ -1282,6 +1331,13 @@
|
|||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-01-16T12:08:28Z"
|
"date": "2026-01-16T12:08:28Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"slug": "slskd",
|
||||||
|
"repo": "slskd/slskd",
|
||||||
|
"version": "0.24.3",
|
||||||
|
"pinned": false,
|
||||||
|
"date": "2026-01-15T14:40:15Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"slug": "snipeit",
|
"slug": "snipeit",
|
||||||
"repo": "grokability/snipe-it",
|
"repo": "grokability/snipe-it",
|
||||||
@@ -1292,9 +1348,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "snowshare",
|
"slug": "snowshare",
|
||||||
"repo": "TuroYT/snowshare",
|
"repo": "TuroYT/snowshare",
|
||||||
"version": "v1.3.3",
|
"version": "v1.3.5",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-09T10:52:12Z"
|
"date": "2026-02-11T10:24:51Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "sonarr",
|
"slug": "sonarr",
|
||||||
@@ -1418,9 +1474,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "tracearr",
|
"slug": "tracearr",
|
||||||
"repo": "connorgallopo/Tracearr",
|
"repo": "connorgallopo/Tracearr",
|
||||||
"version": "v1.4.12",
|
"version": "v1.4.17",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-01-28T23:29:37Z"
|
"date": "2026-02-11T01:33:21Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "tracktor",
|
"slug": "tracktor",
|
||||||
@@ -1432,9 +1488,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "traefik",
|
"slug": "traefik",
|
||||||
"repo": "traefik/traefik",
|
"repo": "traefik/traefik",
|
||||||
"version": "v3.6.7",
|
"version": "v3.6.8",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-01-14T14:11:45Z"
|
"date": "2026-02-11T16:44:37Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "trilium",
|
"slug": "trilium",
|
||||||
@@ -1446,9 +1502,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "trip",
|
"slug": "trip",
|
||||||
"repo": "itskovacs/TRIP",
|
"repo": "itskovacs/TRIP",
|
||||||
"version": "1.39.0",
|
"version": "1.40.0",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-07T16:59:51Z"
|
"date": "2026-02-10T20:12:53Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "tududi",
|
"slug": "tududi",
|
||||||
@@ -1509,9 +1565,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "vaultwarden",
|
"slug": "vaultwarden",
|
||||||
"repo": "dani-garcia/vaultwarden",
|
"repo": "dani-garcia/vaultwarden",
|
||||||
"version": "1.35.2",
|
"version": "1.35.3",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-01-09T18:37:04Z"
|
"date": "2026-02-10T20:37:03Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "victoriametrics",
|
"slug": "victoriametrics",
|
||||||
@@ -1537,9 +1593,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "wallos",
|
"slug": "wallos",
|
||||||
"repo": "ellite/Wallos",
|
"repo": "ellite/Wallos",
|
||||||
"version": "v4.6.0",
|
"version": "v4.6.1",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2025-12-20T15:57:51Z"
|
"date": "2026-02-10T21:06:46Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "wanderer",
|
"slug": "wanderer",
|
||||||
@@ -1572,9 +1628,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "wavelog",
|
"slug": "wavelog",
|
||||||
"repo": "wavelog/wavelog",
|
"repo": "wavelog/wavelog",
|
||||||
"version": "2.2.2",
|
"version": "2.3",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2025-12-31T16:53:34Z"
|
"date": "2026-02-11T15:46:40Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "wealthfolio",
|
"slug": "wealthfolio",
|
||||||
@@ -1590,6 +1646,13 @@
|
|||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2025-11-11T14:30:28Z"
|
"date": "2025-11-11T14:30:28Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"slug": "wger",
|
||||||
|
"repo": "wger-project/wger",
|
||||||
|
"version": "2.4",
|
||||||
|
"pinned": false,
|
||||||
|
"date": "2026-01-18T12:12:02Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"slug": "wikijs",
|
"slug": "wikijs",
|
||||||
"repo": "requarks/wiki",
|
"repo": "requarks/wiki",
|
||||||
@@ -1600,9 +1663,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "wishlist",
|
"slug": "wishlist",
|
||||||
"repo": "cmintey/wishlist",
|
"repo": "cmintey/wishlist",
|
||||||
"version": "v0.59.0",
|
"version": "v0.60.0",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-01-19T16:42:14Z"
|
"date": "2026-02-10T04:05:26Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "wizarr",
|
"slug": "wizarr",
|
||||||
@@ -1628,9 +1691,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "yubal",
|
"slug": "yubal",
|
||||||
"repo": "guillevc/yubal",
|
"repo": "guillevc/yubal",
|
||||||
"version": "v0.4.2",
|
"version": "v0.5.0",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-08T21:35:13Z"
|
"date": "2026-02-09T22:11:32Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "zigbee2mqtt",
|
"slug": "zigbee2mqtt",
|
||||||
@@ -1642,9 +1705,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "zipline",
|
"slug": "zipline",
|
||||||
"repo": "diced/zipline",
|
"repo": "diced/zipline",
|
||||||
"version": "v4.4.1",
|
"version": "v4.4.2",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-01-20T01:29:01Z"
|
"date": "2026-02-11T04:58:54Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "zitadel",
|
"slug": "zitadel",
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
},
|
},
|
||||||
"notes": [
|
"notes": [
|
||||||
{
|
{
|
||||||
"text": "Kutt needs so be served with an SSL certificate for its login to work. During install, you will be prompted to choose if you want to have Caddy installed for SSL termination or if you want to use your own reverse proxy (in that case point your reverse porxy to port 3000).",
|
"text": "Kutt needs so be served with an SSL certificate for its login to work. During install, you will be prompted to choose if you want to have Caddy installed for SSL termination or if you want to use your own reverse proxy (in that case point your reverse proxy to port 3000).",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,44 +1,35 @@
|
|||||||
{
|
{
|
||||||
"name": "Prometheus Paperless NGX Exporter",
|
"name": "Prometheus Paperless NGX Exporter",
|
||||||
"slug": "prometheus-paperless-ngx-exporter",
|
"slug": "prometheus-paperless-ngx-exporter",
|
||||||
"categories": [
|
"categories": [
|
||||||
9
|
9
|
||||||
],
|
],
|
||||||
"date_created": "2025-02-07",
|
"date_created": "2025-02-07",
|
||||||
"type": "ct",
|
"type": "addon",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 8081,
|
"interface_port": 8081,
|
||||||
"documentation": null,
|
"documentation": "https://github.com/hansmi/prometheus-paperless-exporter",
|
||||||
"website": "https://github.com/hansmi/prometheus-paperless-exporter",
|
"website": "https://github.com/hansmi/prometheus-paperless-exporter",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/paperless-ngx.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/paperless-ngx.webp",
|
||||||
"config_path": "",
|
"config_path": "/etc/prometheus-paperless-ngx-exporter/config.env",
|
||||||
"description": "Prometheus metrics exporter for Paperless-NGX, a document management system transforming physical documents into a searchable online archive. The exporter relies on Paperless' REST API.",
|
"description": "Prometheus metrics exporter for Paperless-NGX, a document management system transforming physical documents into a searchable online archive. The exporter relies on Paperless' REST API.",
|
||||||
"install_methods": [
|
"install_methods": [
|
||||||
{
|
{
|
||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/prometheus-paperless-ngx-exporter.sh",
|
"script": "tools/addon/prometheus-paperless-ngx-exporter.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": 1,
|
"cpu": null,
|
||||||
"ram": 256,
|
"ram": null,
|
||||||
"hdd": 2,
|
"hdd": null,
|
||||||
"os": "debian",
|
"os": null,
|
||||||
"version": "13"
|
"version": null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"default_credentials": {
|
"default_credentials": {
|
||||||
"username": null,
|
"username": null,
|
||||||
"password": null
|
"password": null
|
||||||
},
|
},
|
||||||
"notes": [
|
"notes": []
|
||||||
{
|
|
||||||
"text": "Please adjust the Paperless URL in the systemd unit file: /etc/systemd/system/prometheus-paperless-ngx-exporter.service",
|
|
||||||
"type": "info"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"text": "Please adjust the Paperless authentication token in the configuration file: /etc/prometheus-paperless-ngx-exporter/paperless_auth_token_file",
|
|
||||||
"type": "info"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "slskd",
|
"name": "Slskd",
|
||||||
"slug": "slskd",
|
"slug": "slskd",
|
||||||
"categories": [
|
"categories": [
|
||||||
11
|
11
|
||||||
@@ -35,10 +35,6 @@
|
|||||||
{
|
{
|
||||||
"text": "See /opt/slskd/config/slskd.yml to add your Soulseek credentials",
|
"text": "See /opt/slskd/config/slskd.yml to add your Soulseek credentials",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
},
|
|
||||||
{
|
|
||||||
"text": "This LXC includes Soularr; it needs to be configured (/opt/soularr/config.ini) before it will work",
|
|
||||||
"type": "info"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 3000,
|
"interface_port": 3000,
|
||||||
"documentation": "https://github.com/TuroYT/snowshare",
|
"documentation": "https://github.com/TuroYT/snowshare",
|
||||||
"config_path": "/opt/snowshare/.env",
|
"config_path": "/opt/snowshare.env",
|
||||||
"website": "https://github.com/TuroYT/snowshare",
|
"website": "https://github.com/TuroYT/snowshare",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/snowshare.png",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/snowshare.png",
|
||||||
"description": "A modern, secure file and link sharing platform built with Next.js, Prisma, and NextAuth. Share URLs, code snippets, and files with customizable expiration, privacy, and QR codes.",
|
"description": "A modern, secure file and link sharing platform built with Next.js, Prisma, and NextAuth. Share URLs, code snippets, and files with customizable expiration, privacy, and QR codes.",
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ DISABLE_REGISTRATION=False
|
|||||||
EOF
|
EOF
|
||||||
cd /opt/adventurelog/backend/server
|
cd /opt/adventurelog/backend/server
|
||||||
mkdir -p /opt/adventurelog/backend/server/media
|
mkdir -p /opt/adventurelog/backend/server/media
|
||||||
$STD uv venv /opt/adventurelog/backend/server/.venv
|
$STD uv venv --clear /opt/adventurelog/backend/server/.venv
|
||||||
$STD /opt/adventurelog/backend/server/.venv/bin/python -m ensurepip --upgrade
|
$STD /opt/adventurelog/backend/server/.venv/bin/python -m ensurepip --upgrade
|
||||||
$STD /opt/adventurelog/backend/server/.venv/bin/python -m pip install --upgrade pip
|
$STD /opt/adventurelog/backend/server/.venv/bin/python -m pip install --upgrade pip
|
||||||
$STD /opt/adventurelog/backend/server/.venv/bin/python -m pip install -r requirements.txt
|
$STD /opt/adventurelog/backend/server/.venv/bin/python -m pip install -r requirements.txt
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ echo "${KEPUB_VERSION#v}" >"$INSTALL_DIR"/KEPUBIFY_RELEASE
|
|||||||
sed 's/^/v/' ~/.autocaliweb >"$INSTALL_DIR"/ACW_RELEASE
|
sed 's/^/v/' ~/.autocaliweb >"$INSTALL_DIR"/ACW_RELEASE
|
||||||
|
|
||||||
cd "$INSTALL_DIR"
|
cd "$INSTALL_DIR"
|
||||||
$STD uv venv "$VIRTUAL_ENV"
|
$STD uv venv --clear "$VIRTUAL_ENV"
|
||||||
$STD uv sync --all-extras --active
|
$STD uv sync --all-extras --active
|
||||||
cat <<EOF >./dirs.json
|
cat <<EOF >./dirs.json
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ fetch_and_deploy_gh_release "babybuddy" "babybuddy/babybuddy" "tarball"
|
|||||||
msg_info "Installing Babybuddy"
|
msg_info "Installing Babybuddy"
|
||||||
mkdir -p /opt/data
|
mkdir -p /opt/data
|
||||||
cd /opt/babybuddy
|
cd /opt/babybuddy
|
||||||
$STD uv venv .venv
|
$STD uv venv --clear .venv
|
||||||
$STD source .venv/bin/activate
|
$STD source .venv/bin/activate
|
||||||
$STD uv pip install -r requirements.txt
|
$STD uv pip install -r requirements.txt
|
||||||
cp babybuddy/settings/production.example.py babybuddy/settings/production.py
|
cp babybuddy/settings/production.example.py babybuddy/settings/production.py
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ msg_info "Installing Bazarr"
|
|||||||
mkdir -p /var/lib/bazarr/
|
mkdir -p /var/lib/bazarr/
|
||||||
chmod 775 /opt/bazarr /var/lib/bazarr/
|
chmod 775 /opt/bazarr /var/lib/bazarr/
|
||||||
sed -i.bak 's/--only-binary=Pillow//g' /opt/bazarr/requirements.txt
|
sed -i.bak 's/--only-binary=Pillow//g' /opt/bazarr/requirements.txt
|
||||||
$STD uv venv /opt/bazarr/venv --python 3.12
|
$STD uv venv --clear /opt/bazarr/venv --python 3.12
|
||||||
$STD uv pip install -r /opt/bazarr/requirements.txt --python /opt/bazarr/venv/bin/python3
|
$STD uv pip install -r /opt/bazarr/requirements.txt --python /opt/bazarr/venv/bin/python3
|
||||||
msg_ok "Installed Bazarr"
|
msg_ok "Installed Bazarr"
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ PYTHON_VERSION="3.12" setup_uv
|
|||||||
fetch_and_deploy_gh_release "ComfyUI" "comfyanonymous/ComfyUI" "tarball" "latest" "/opt/ComfyUI"
|
fetch_and_deploy_gh_release "ComfyUI" "comfyanonymous/ComfyUI" "tarball" "latest" "/opt/ComfyUI"
|
||||||
|
|
||||||
msg_info "Python dependencies"
|
msg_info "Python dependencies"
|
||||||
$STD uv venv "/opt/ComfyUI/venv"
|
$STD uv venv --clear "/opt/ComfyUI/venv"
|
||||||
|
|
||||||
if [[ "${comfyui_gpu_type,,}" == "nvidia" ]]; then
|
if [[ "${comfyui_gpu_type,,}" == "nvidia" ]]; then
|
||||||
pytorch_url="https://download.pytorch.org/whl/cu130"
|
pytorch_url="https://download.pytorch.org/whl/cu130"
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ fetch_and_deploy_gh_release "dispatcharr" "Dispatcharr/Dispatcharr" "tarball"
|
|||||||
|
|
||||||
msg_info "Installing Python Dependencies with uv"
|
msg_info "Installing Python Dependencies with uv"
|
||||||
cd /opt/dispatcharr
|
cd /opt/dispatcharr
|
||||||
$STD uv venv
|
$STD uv venv --clear
|
||||||
$STD uv pip install -r requirements.txt --index-strategy unsafe-best-match
|
$STD uv pip install -r requirements.txt --index-strategy unsafe-best-match
|
||||||
$STD uv pip install gunicorn gevent celery redis daphne
|
$STD uv pip install gunicorn gevent celery redis daphne
|
||||||
msg_ok "Installed Python Dependencies"
|
msg_ok "Installed Python Dependencies"
|
||||||
|
|||||||
25
install/drawio-install.sh
Normal file
25
install/drawio-install.sh
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: Slaviša Arežina (tremor021)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://www.drawio.com/
|
||||||
|
|
||||||
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
setup_hwaccel
|
||||||
|
|
||||||
|
msg_info "Installing Dependencies"
|
||||||
|
$STD apt install -y tomcat11
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
USE_ORIGINAL_FILENAME=true fetch_and_deploy_gh_release "drawio" "jgraph/drawio" "singlefile" "latest" "/var/lib/tomcat11/webapps" "draw.war"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
cleanup_lxc
|
||||||
@@ -31,8 +31,10 @@ setup_deb822_repo "matrix-org" \
|
|||||||
"main"
|
"main"
|
||||||
echo "matrix-synapse-py3 matrix-synapse/server-name string $servername" | debconf-set-selections
|
echo "matrix-synapse-py3 matrix-synapse/server-name string $servername" | debconf-set-selections
|
||||||
echo "matrix-synapse-py3 matrix-synapse/report-stats boolean false" | debconf-set-selections
|
echo "matrix-synapse-py3 matrix-synapse/report-stats boolean false" | debconf-set-selections
|
||||||
|
echo "exit 101" >/usr/sbin/policy-rc.d
|
||||||
|
chmod +x /usr/sbin/policy-rc.d
|
||||||
$STD apt install matrix-synapse-py3 -y
|
$STD apt install matrix-synapse-py3 -y
|
||||||
systemctl stop matrix-synapse
|
rm -f /usr/sbin/policy-rc.d
|
||||||
sed -i 's/127.0.0.1/0.0.0.0/g' /etc/matrix-synapse/homeserver.yaml
|
sed -i 's/127.0.0.1/0.0.0.0/g' /etc/matrix-synapse/homeserver.yaml
|
||||||
sed -i 's/'\''::1'\'', //g' /etc/matrix-synapse/homeserver.yaml
|
sed -i 's/'\''::1'\'', //g' /etc/matrix-synapse/homeserver.yaml
|
||||||
SECRET=$(openssl rand -hex 32)
|
SECRET=$(openssl rand -hex 32)
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ $STD uv tool update-shell
|
|||||||
export PATH="/root/.local/bin:$PATH"
|
export PATH="/root/.local/bin:$PATH"
|
||||||
$STD poetry self add poetry-plugin-export
|
$STD poetry self add poetry-plugin-export
|
||||||
$STD poetry export -f requirements.txt --output requirements.txt --without-hashes
|
$STD poetry export -f requirements.txt --output requirements.txt --without-hashes
|
||||||
$STD uv venv
|
$STD uv venv --clear
|
||||||
$STD uv pip install -r requirements.txt
|
$STD uv pip install -r requirements.txt
|
||||||
msg_ok "Setup Backend"
|
msg_ok "Setup Backend"
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ msg_info "Setting up Virtual Environment"
|
|||||||
mkdir -p /opt/esphome
|
mkdir -p /opt/esphome
|
||||||
mkdir -p /root/config
|
mkdir -p /root/config
|
||||||
cd /opt/esphome
|
cd /opt/esphome
|
||||||
$STD uv venv /opt/esphome/.venv
|
$STD uv venv --clear /opt/esphome/.venv
|
||||||
$STD /opt/esphome/.venv/bin/python -m ensurepip --upgrade
|
$STD /opt/esphome/.venv/bin/python -m ensurepip --upgrade
|
||||||
$STD /opt/esphome/.venv/bin/python -m pip install --upgrade pip
|
$STD /opt/esphome/.venv/bin/python -m pip install --upgrade pip
|
||||||
$STD /opt/esphome/.venv/bin/python -m pip install esphome tornado esptool
|
$STD /opt/esphome/.venv/bin/python -m pip install esphome tornado esptool
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ PYTHON_VERSION="3.12" setup_uv
|
|||||||
fetch_and_deploy_gh_release "huntarr" "plexguide/Huntarr.io" "tarball"
|
fetch_and_deploy_gh_release "huntarr" "plexguide/Huntarr.io" "tarball"
|
||||||
|
|
||||||
msg_info "Configure Huntarr"
|
msg_info "Configure Huntarr"
|
||||||
$STD uv venv /opt/huntarr/.venv
|
$STD uv venv --clear /opt/huntarr/.venv
|
||||||
$STD uv pip install --python /opt/huntarr/.venv/bin/python -r /opt/huntarr/requirements.txt
|
$STD uv pip install --python /opt/huntarr/.venv/bin/python -r /opt/huntarr/requirements.txt
|
||||||
msg_ok "Configured Huntrarr"
|
msg_ok "Configured Huntrarr"
|
||||||
|
|
||||||
|
|||||||
@@ -289,7 +289,7 @@ ML_DIR="${APP_DIR}/machine-learning"
|
|||||||
GEO_DIR="${INSTALL_DIR}/geodata"
|
GEO_DIR="${INSTALL_DIR}/geodata"
|
||||||
mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${INSTALL_DIR}"/cache}
|
mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${INSTALL_DIR}"/cache}
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "Immich" "immich-app/immich" "tarball" "v2.5.5" "$SRC_DIR"
|
fetch_and_deploy_gh_release "Immich" "immich-app/immich" "tarball" "v2.5.6" "$SRC_DIR"
|
||||||
PNPM_VERSION="$(jq -r '.packageManager | split("@")[1]' ${SRC_DIR}/package.json)"
|
PNPM_VERSION="$(jq -r '.packageManager | split("@")[1]' ${SRC_DIR}/package.json)"
|
||||||
NODE_VERSION="24" NODE_MODULE="pnpm@${PNPM_VERSION}" setup_nodejs
|
NODE_VERSION="24" NODE_MODULE="pnpm@${PNPM_VERSION}" setup_nodejs
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ PYTHON_VERSION="3.12" setup_uv
|
|||||||
msg_info "Installing Jupyter"
|
msg_info "Installing Jupyter"
|
||||||
mkdir -p /opt/jupyter
|
mkdir -p /opt/jupyter
|
||||||
cd /opt/jupyter
|
cd /opt/jupyter
|
||||||
$STD uv venv /opt/jupyter/.venv
|
$STD uv venv --clear /opt/jupyter/.venv
|
||||||
$STD /opt/jupyter/.venv/bin/python -m ensurepip --upgrade
|
$STD /opt/jupyter/.venv/bin/python -m ensurepip --upgrade
|
||||||
$STD /opt/jupyter/.venv/bin/python -m pip install --upgrade pip
|
$STD /opt/jupyter/.venv/bin/python -m pip install --upgrade pip
|
||||||
$STD /opt/jupyter/.venv/bin/python -m pip install jupyter
|
$STD /opt/jupyter/.venv/bin/python -m pip install jupyter
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ fetch_and_deploy_gh_release "kapowarr" "Casvt/Kapowarr" "tarball"
|
|||||||
|
|
||||||
msg_info "Setup Kapowarr"
|
msg_info "Setup Kapowarr"
|
||||||
cd /opt/kapowarr
|
cd /opt/kapowarr
|
||||||
$STD uv venv .venv
|
$STD uv venv --clear .venv
|
||||||
$STD source .venv/bin/activate
|
$STD source .venv/bin/activate
|
||||||
$STD uv pip install --upgrade pip
|
$STD uv pip install --upgrade pip
|
||||||
$STD uv pip install --no-cache-dir -r requirements.txt
|
$STD uv pip install --no-cache-dir -r requirements.txt
|
||||||
|
|||||||
@@ -20,10 +20,19 @@ msg_ok "Installed Docker"
|
|||||||
msg_info "Detecting latest Kasm Workspaces release"
|
msg_info "Detecting latest Kasm Workspaces release"
|
||||||
KASM_URL=$(curl -fsSL "https://www.kasm.com/downloads" | tr '\n' ' ' | grep -oE 'https://kasm-static-content[^"]*kasm_release_[0-9]+\.[0-9]+\.[0-9]+\.[a-z0-9]+\.tar\.gz' | head -n 1)
|
KASM_URL=$(curl -fsSL "https://www.kasm.com/downloads" | tr '\n' ' ' | grep -oE 'https://kasm-static-content[^"]*kasm_release_[0-9]+\.[0-9]+\.[0-9]+\.[a-z0-9]+\.tar\.gz' | head -n 1)
|
||||||
if [[ -z "$KASM_URL" ]]; then
|
if [[ -z "$KASM_URL" ]]; then
|
||||||
|
SERVICE_IMAGE_URL=$(curl -fsSL "https://www.kasm.com/downloads" | tr '\n' ' ' | grep -oE 'https://kasm-static-content[^"]*kasm_release_service_images_amd64_[0-9]+\.[0-9]+\.[0-9]+\.tar\.gz' | head -n 1)
|
||||||
|
if [[ -n "$SERVICE_IMAGE_URL" ]]; then
|
||||||
|
KASM_VERSION=$(echo "$SERVICE_IMAGE_URL" | sed -E 's/.*kasm_release_service_images_amd64_([0-9]+\.[0-9]+\.[0-9]+).*/\1/')
|
||||||
|
KASM_URL="https://kasm-static-content.s3.amazonaws.com/kasm_release_${KASM_VERSION}.tar.gz"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
KASM_VERSION=$(echo "$KASM_URL" | sed -E 's/.*kasm_release_([0-9]+\.[0-9]+\.[0-9]+).*/\1/')
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z "$KASM_URL" ]] || [[ -z "$KASM_VERSION" ]]; then
|
||||||
msg_error "Unable to detect latest Kasm release URL."
|
msg_error "Unable to detect latest Kasm release URL."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
KASM_VERSION=$(echo "$KASM_URL" | sed -E 's/.*kasm_release_([0-9]+\.[0-9]+\.[0-9]+).*/\1/')
|
|
||||||
msg_ok "Detected Kasm Workspaces version $KASM_VERSION"
|
msg_ok "Detected Kasm Workspaces version $KASM_VERSION"
|
||||||
|
|
||||||
msg_warn "WARNING: This script will run an external installer from a third-party source (https://www.kasmweb.com/)."
|
msg_warn "WARNING: This script will run an external installer from a third-party source (https://www.kasmweb.com/)."
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ $STD useradd librenms -d /opt/librenms -M -r -s "$(which bash)"
|
|||||||
mkdir -p /opt/librenms/{rrd,logs,bootstrap/cache,storage,html}
|
mkdir -p /opt/librenms/{rrd,logs,bootstrap/cache,storage,html}
|
||||||
cd /opt/librenms
|
cd /opt/librenms
|
||||||
APP_KEY=$(openssl rand -base64 40 | tr -dc 'a-zA-Z0-9')
|
APP_KEY=$(openssl rand -base64 40 | tr -dc 'a-zA-Z0-9')
|
||||||
$STD uv venv .venv
|
$STD uv venv --clear .venv
|
||||||
$STD source .venv/bin/activate
|
$STD source .venv/bin/activate
|
||||||
$STD uv pip install -r requirements.txt
|
$STD uv pip install -r requirements.txt
|
||||||
cat <<EOF >/opt/librenms/.env
|
cat <<EOF >/opt/librenms/.env
|
||||||
|
|||||||
@@ -37,18 +37,13 @@ PYTHON_VERSION="3.12" setup_uv
|
|||||||
fetch_and_deploy_gh_release "libretranslate" "LibreTranslate/LibreTranslate" "tarball"
|
fetch_and_deploy_gh_release "libretranslate" "LibreTranslate/LibreTranslate" "tarball"
|
||||||
|
|
||||||
msg_info "Setup LibreTranslate (Patience)"
|
msg_info "Setup LibreTranslate (Patience)"
|
||||||
TORCH_VERSION=$(grep -Eo '"torch ==[0-9]+\.[0-9]+\.[0-9]+' /opt/libretranslate/pyproject.toml |
|
|
||||||
tail -n1 | sed 's/.*==//')
|
|
||||||
if [[ -z "$TORCH_VERSION" ]]; then
|
|
||||||
TORCH_VERSION="2.5.0"
|
|
||||||
fi
|
|
||||||
cd /opt/libretranslate
|
cd /opt/libretranslate
|
||||||
$STD uv venv .venv --python 3.12
|
$STD uv venv --clear .venv --python 3.12
|
||||||
$STD source .venv/bin/activate
|
$STD source .venv/bin/activate
|
||||||
$STD uv pip install --upgrade pip setuptools
|
$STD uv pip install --upgrade pip
|
||||||
|
$STD uv pip install "setuptools<81"
|
||||||
$STD uv pip install Babel==2.12.1
|
$STD uv pip install Babel==2.12.1
|
||||||
$STD .venv/bin/python scripts/compile_locales.py
|
$STD .venv/bin/python scripts/compile_locales.py
|
||||||
$STD uv pip install "torch==${TORCH_VERSION}" --extra-index-url https://download.pytorch.org/whl/cpu
|
|
||||||
$STD uv pip install "numpy<2"
|
$STD uv pip install "numpy<2"
|
||||||
$STD uv pip install .
|
$STD uv pip install .
|
||||||
$STD uv pip install libretranslate
|
$STD uv pip install libretranslate
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ msg_ok "Set up PostgreSQL"
|
|||||||
msg_info "Setting up Virtual Environment"
|
msg_info "Setting up Virtual Environment"
|
||||||
mkdir -p /opt/litellm
|
mkdir -p /opt/litellm
|
||||||
cd /opt/litellm
|
cd /opt/litellm
|
||||||
$STD uv venv /opt/litellm/.venv
|
$STD uv venv --clear /opt/litellm/.venv
|
||||||
$STD /opt/litellm/.venv/bin/python -m ensurepip --upgrade
|
$STD /opt/litellm/.venv/bin/python -m ensurepip --upgrade
|
||||||
$STD /opt/litellm/.venv/bin/python -m pip install --upgrade pip
|
$STD /opt/litellm/.venv/bin/python -m pip install --upgrade pip
|
||||||
$STD /opt/litellm/.venv/bin/python -m pip install litellm[proxy] prisma
|
$STD /opt/litellm/.venv/bin/python -m pip install litellm[proxy] prisma
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ fetch_and_deploy_gh_release "mylar3" "mylar3/mylar3" "tarball"
|
|||||||
|
|
||||||
msg_info "Installing ${APPLICATION}"
|
msg_info "Installing ${APPLICATION}"
|
||||||
mkdir -p /opt/mylar3-data
|
mkdir -p /opt/mylar3-data
|
||||||
$STD uv venv /opt/mylar3/.venv
|
$STD uv venv --clear /opt/mylar3/.venv
|
||||||
$STD /opt/mylar3/.venv/bin/python -m ensurepip --upgrade
|
$STD /opt/mylar3/.venv/bin/python -m ensurepip --upgrade
|
||||||
$STD /opt/mylar3/.venv/bin/python -m pip install --upgrade pip
|
$STD /opt/mylar3/.venv/bin/python -m pip install --upgrade pip
|
||||||
$STD /opt/mylar3/.venv/bin/python -m pip install --no-cache-dir -r /opt/mylar3/requirements.txt
|
$STD /opt/mylar3/.venv/bin/python -m pip install --no-cache-dir -r /opt/mylar3/requirements.txt
|
||||||
|
|||||||
@@ -1,47 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Copyright (c) 2021-2026 community-scripts ORG
|
|
||||||
# Author: Andy Grunwald (andygrunwald)
|
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/hansmi/prometheus-paperless-exporter
|
|
||||||
|
|
||||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
|
||||||
color
|
|
||||||
verb_ip6
|
|
||||||
catch_errors
|
|
||||||
setting_up_container
|
|
||||||
network_check
|
|
||||||
update_os
|
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "prom-paperless-exp" "hansmi/prometheus-paperless-exporter" "binary"
|
|
||||||
|
|
||||||
msg_info "Configuring Prometheus Paperless NGX Exporter"
|
|
||||||
mkdir -p /etc/prometheus-paperless-ngx-exporter
|
|
||||||
echo "SECRET_AUTH_TOKEN" >/etc/prometheus-paperless-ngx-exporter/paperless_auth_token_file
|
|
||||||
msg_ok "Configured Prometheus Paperless NGX Exporter"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
|
||||||
cat <<EOF >/etc/systemd/system/prometheus-paperless-ngx-exporter.service
|
|
||||||
[Unit]
|
|
||||||
Description=Prometheus Paperless NGX Exporter
|
|
||||||
Wants=network-online.target
|
|
||||||
After=network-online.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
User=root
|
|
||||||
Restart=always
|
|
||||||
Type=simple
|
|
||||||
ExecStart=/usr/bin/prometheus-paperless-exporter \
|
|
||||||
--paperless_url=http://paperless.example.org \
|
|
||||||
--paperless_auth_token_file=/etc/prometheus-paperless-ngx-exporter/paperless_auth_token_file
|
|
||||||
ExecReload=/bin/kill -HUP \$MAINPID
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
systemctl enable -q --now prometheus-paperless-ngx-exporter
|
|
||||||
msg_ok "Created Service"
|
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
cleanup_lxc
|
|
||||||
@@ -19,7 +19,7 @@ msg_info "Installing Prometheus Proxmox VE Exporter"
|
|||||||
mkdir -p /opt/prometheus-pve-exporter
|
mkdir -p /opt/prometheus-pve-exporter
|
||||||
cd /opt/prometheus-pve-exporter
|
cd /opt/prometheus-pve-exporter
|
||||||
|
|
||||||
$STD uv venv /opt/prometheus-pve-exporter/.venv
|
$STD uv venv --clear /opt/prometheus-pve-exporter/.venv
|
||||||
$STD /opt/prometheus-pve-exporter/.venv/bin/python -m ensurepip --upgrade
|
$STD /opt/prometheus-pve-exporter/.venv/bin/python -m ensurepip --upgrade
|
||||||
$STD /opt/prometheus-pve-exporter/.venv/bin/python -m pip install --upgrade pip
|
$STD /opt/prometheus-pve-exporter/.venv/bin/python -m pip install --upgrade pip
|
||||||
$STD /opt/prometheus-pve-exporter/.venv/bin/python -m pip install prometheus-pve-exporter
|
$STD /opt/prometheus-pve-exporter/.venv/bin/python -m pip install prometheus-pve-exporter
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ msg_ok "Setup Unrar"
|
|||||||
fetch_and_deploy_gh_release "sabnzbd-org" "sabnzbd/sabnzbd" "prebuild" "latest" "/opt/sabnzbd" "SABnzbd-*-src.tar.gz"
|
fetch_and_deploy_gh_release "sabnzbd-org" "sabnzbd/sabnzbd" "prebuild" "latest" "/opt/sabnzbd" "SABnzbd-*-src.tar.gz"
|
||||||
|
|
||||||
msg_info "Installing SABnzbd"
|
msg_info "Installing SABnzbd"
|
||||||
$STD uv venv /opt/sabnzbd/venv
|
$STD uv venv --clear /opt/sabnzbd/venv
|
||||||
$STD uv pip install -r /opt/sabnzbd/requirements.txt --python=/opt/sabnzbd/venv/bin/python
|
$STD uv pip install -r /opt/sabnzbd/requirements.txt --python=/opt/sabnzbd/venv/bin/python
|
||||||
msg_ok "Installed SABnzbd"
|
msg_ok "Installed SABnzbd"
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ fetch_and_deploy_gh_release "scrappar" "thecfu/scraparr" "tarball" "latest" "/op
|
|||||||
|
|
||||||
msg_info "Installing Scraparr"
|
msg_info "Installing Scraparr"
|
||||||
cd /opt/scraparr
|
cd /opt/scraparr
|
||||||
$STD uv venv /opt/scraparr/.venv
|
$STD uv venv --clear /opt/scraparr/.venv
|
||||||
$STD /opt/scraparr/.venv/bin/python -m ensurepip --upgrade
|
$STD /opt/scraparr/.venv/bin/python -m ensurepip --upgrade
|
||||||
$STD /opt/scraparr/.venv/bin/python -m pip install --upgrade pip
|
$STD /opt/scraparr/.venv/bin/python -m pip install --upgrade pip
|
||||||
$STD /opt/scraparr/.venv/bin/python -m pip install -r /opt/scraparr/src/scraparr/requirements.txt
|
$STD /opt/scraparr/.venv/bin/python -m pip install -r /opt/scraparr/src/scraparr/requirements.txt
|
||||||
|
|||||||
@@ -131,7 +131,7 @@ msg_ok "Built Shelfmark frontend"
|
|||||||
|
|
||||||
msg_info "Configuring Shelfmark"
|
msg_info "Configuring Shelfmark"
|
||||||
cd /opt/shelfmark
|
cd /opt/shelfmark
|
||||||
$STD uv venv ./venv
|
$STD uv venv --clear ./venv
|
||||||
$STD source ./venv/bin/activate
|
$STD source ./venv/bin/activate
|
||||||
$STD uv pip install -r ./requirements-base.txt
|
$STD uv pip install -r ./requirements-base.txt
|
||||||
[[ "$DEPLOYMENT_TYPE" == "1" ]] && $STD uv pip install -r ./requirements-shelfmark.txt
|
[[ "$DEPLOYMENT_TYPE" == "1" ]] && $STD uv pip install -r ./requirements-shelfmark.txt
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
# Copyright (c) 2021-2026 community-scripts ORG
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
# Author: vhsdream
|
# Author: vhsdream
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://github.com/slskd/slskd/, https://soularr.net
|
# Source: https://github.com/slskd/slskd/, https://github.com/mrusse/soularr
|
||||||
|
|
||||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
color
|
color
|
||||||
@@ -13,71 +13,71 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
fetch_and_deploy_gh_release "Slskd" "slskd/slskd" "prebuild" "latest" "/opt/slskd" "slskd-*-linux-x64.zip"
|
||||||
$STD apt install -y \
|
|
||||||
python3-pip
|
|
||||||
msg_ok "Installed Dependencies"
|
|
||||||
|
|
||||||
msg_info "Setup ${APPLICATION}"
|
msg_info "Configuring Slskd"
|
||||||
tmp_file=$(mktemp)
|
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/slskd/slskd/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
|
||||||
curl -fsSL "https://github.com/slskd/slskd/releases/download/${RELEASE}/slskd-${RELEASE}-linux-x64.zip" -o $tmp_file
|
|
||||||
$STD unzip $tmp_file -d /opt/${APPLICATION}
|
|
||||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
|
||||||
JWT_KEY=$(openssl rand -base64 44)
|
JWT_KEY=$(openssl rand -base64 44)
|
||||||
SLSKD_API_KEY=$(openssl rand -base64 44)
|
SLSKD_API_KEY=$(openssl rand -base64 44)
|
||||||
cp /opt/${APPLICATION}/config/slskd.example.yml /opt/${APPLICATION}/config/slskd.yml
|
cp /opt/slskd/config/slskd.example.yml /opt/slskd/config/slskd.yml
|
||||||
sed -i \
|
sed -i \
|
||||||
-e "\|web:|,\|cidr|s|^#||" \
|
-e '/web:/,/cidr/s/^# //' \
|
||||||
-e "\|https:|,\|5031|s|false|true|" \
|
-e '/https:/,/port: 5031/s/false/true/' \
|
||||||
|
-e '/port: 5030/,/socket/s/,.*$//' \
|
||||||
|
-e '/content_path:/,/authentication/s/false/true/' \
|
||||||
-e "\|api_keys|,\|cidr|s|<some.*$|$SLSKD_API_KEY|; \
|
-e "\|api_keys|,\|cidr|s|<some.*$|$SLSKD_API_KEY|; \
|
||||||
s|role: readonly|role: readwrite|; \
|
s|role: readonly|role: readwrite|; \
|
||||||
s|0.0.0.0/0,::/0|& # Replace this with your subnet|" \
|
s|0.0.0.0/0,::/0|& # Replace this with your subnet|" \
|
||||||
-e "\|soulseek|,\|write_queue|s|^#||" \
|
|
||||||
-e "\|jwt:|,\|ttl|s|key: ~|key: $JWT_KEY|" \
|
-e "\|jwt:|,\|ttl|s|key: ~|key: $JWT_KEY|" \
|
||||||
-e "s|^ picture|# picture|" \
|
-e '/soulseek/,/write_queue/s/^# //' \
|
||||||
/opt/${APPLICATION}/config/slskd.yml
|
-e 's/^.*picture/#&/' /opt/slskd/config/slskd.yml
|
||||||
msg_ok "Setup ${APPLICATION}"
|
msg_ok "Configured Slskd"
|
||||||
|
|
||||||
msg_info "Installing Soularr"
|
read -rp "${TAB3}Do you want to install Soularr? y/N " soularr
|
||||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
if [[ ${soularr,,} =~ ^(y|yes)$ ]]; then
|
||||||
cd /tmp
|
PYTHON_VERSION="3.11" setup_uv
|
||||||
curl -fsSL -o main.zip https://github.com/mrusse/soularr/archive/refs/heads/main.zip
|
fetch_and_deploy_gh_release "Soularr" "mrusse/soularr" "tarball" "latest" "/opt/soularr"
|
||||||
$STD unzip main.zip
|
cd /opt/soularr
|
||||||
mv soularr-main /opt/soularr
|
$STD uv venv venv
|
||||||
cd /opt/soularr
|
$STD source venv/bin/activate
|
||||||
$STD pip install -r requirements.txt
|
$STD uv pip install -r requirements.txt
|
||||||
sed -i \
|
sed -i \
|
||||||
-e "\|[Slskd]|,\|host_url|s|yourslskdapikeygoeshere|$SLSKD_API_KEY|" \
|
-e "\|[Slskd]|,\|host_url|s|yourslskdapikeygoeshere|$SLSKD_API_KEY|" \
|
||||||
-e "/host_url/s/slskd/localhost/" \
|
-e "/host_url/s/slskd/localhost/" \
|
||||||
/opt/soularr/config.ini
|
/opt/soularr/config.ini
|
||||||
sed -i \
|
cat <<EOF >/opt/soularr/run.sh
|
||||||
-e "/#This\|#Default\|INTERVAL/{N;d;}" \
|
#!/usr/bin/env bash
|
||||||
-e "/while\|#Pass/d" \
|
|
||||||
-e "\|python|s|app|opt/soularr|; s|python|python3|" \
|
|
||||||
-e "/dt/,+2d" \
|
|
||||||
/opt/soularr/run.sh
|
|
||||||
sed -i -E "/(soularr.py)/s/.{5}$//; /if/,/fi/s/.{4}//" /opt/soularr/run.sh
|
|
||||||
chmod +x /opt/soularr/run.sh
|
|
||||||
msg_ok "Installed Soularr"
|
|
||||||
|
|
||||||
msg_info "Creating Services"
|
if ps aux | grep "[s]oularr.py" >/dev/null; then
|
||||||
cat <<EOF >/etc/systemd/system/${APPLICATION}.service
|
echo "Soularr is already running. Exiting..."
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
source /opt/soularr/venv/bin/activate
|
||||||
|
uv run python3 -u /opt/soularr/soularr.py --config-dir /opt/soularr
|
||||||
|
fi
|
||||||
|
EOF
|
||||||
|
chmod +x /opt/soularr/run.sh
|
||||||
|
deactivate
|
||||||
|
msg_ok "Installed Soularr"
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg_info "Creating Service"
|
||||||
|
cat <<EOF >/etc/systemd/system/slskd.service
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=${APPLICATION} Service
|
Description=Slskd Service
|
||||||
After=network.target
|
After=network.target
|
||||||
Wants=network.target
|
Wants=network.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
WorkingDirectory=/opt/${APPLICATION}
|
WorkingDirectory=/opt/slskd
|
||||||
ExecStart=/opt/${APPLICATION}/slskd --config /opt/${APPLICATION}/config/slskd.yml
|
ExecStart=/opt/slskd/slskd --config /opt/slskd/config/slskd.yml
|
||||||
Restart=always
|
Restart=always
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
cat <<EOF >/etc/systemd/system/soularr.timer
|
if [[ -d /opt/soularr ]]; then
|
||||||
|
cat <<EOF >/etc/systemd/system/soularr.timer
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Soularr service timer
|
Description=Soularr service timer
|
||||||
RefuseManualStart=no
|
RefuseManualStart=no
|
||||||
@@ -85,15 +85,15 @@ RefuseManualStop=no
|
|||||||
|
|
||||||
[Timer]
|
[Timer]
|
||||||
Persistent=true
|
Persistent=true
|
||||||
# run every 5 minutes
|
# run every 10 minutes
|
||||||
OnCalendar=*-*-* *:0/5:00
|
OnCalendar=*-*-* *:0/10:00
|
||||||
Unit=soularr.service
|
Unit=soularr.service
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=timers.target
|
WantedBy=timers.target
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
cat <<EOF >/etc/systemd/system/soularr.service
|
cat <<EOF >/etc/systemd/system/soularr.service
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Soularr service
|
Description=Soularr service
|
||||||
After=network.target slskd.service
|
After=network.target slskd.service
|
||||||
@@ -106,10 +106,9 @@ ExecStart=/bin/bash -c /opt/soularr/run.sh
|
|||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
systemctl enable -q --now ${APPLICATION}
|
msg_warn "Add your Lidarr API key to Soularr in '/opt/soularr/config.ini', then run 'systemctl enable --now soularr.timer'"
|
||||||
systemctl enable -q soularr.timer
|
fi
|
||||||
rm -rf $tmp_file
|
systemctl enable -q --now slskd
|
||||||
rm -rf /tmp/main.zip
|
|
||||||
msg_ok "Created Services"
|
msg_ok "Created Services"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ msg_ok "Installed LibreOffice Components"
|
|||||||
|
|
||||||
msg_info "Installing Python Dependencies"
|
msg_info "Installing Python Dependencies"
|
||||||
mkdir -p /tmp/stirling-pdf
|
mkdir -p /tmp/stirling-pdf
|
||||||
$STD uv venv /opt/.venv
|
$STD uv venv --clear /opt/.venv
|
||||||
export PATH="/opt/.venv/bin:$PATH"
|
export PATH="/opt/.venv/bin:$PATH"
|
||||||
source /opt/.venv/bin/activate
|
source /opt/.venv/bin/activate
|
||||||
$STD uv pip install --upgrade pip
|
$STD uv pip install --upgrade pip
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ fetch_and_deploy_gh_release "streamlink-webui" "CrazyWolf13/streamlink-webui" "t
|
|||||||
|
|
||||||
msg_info "Setup ${APPLICATION}"
|
msg_info "Setup ${APPLICATION}"
|
||||||
mkdir -p "/opt/${APPLICATION}-download"
|
mkdir -p "/opt/${APPLICATION}-download"
|
||||||
$STD uv venv /opt/"${APPLICATION}"/backend/src/.venv
|
$STD uv venv --clear /opt/"${APPLICATION}"/backend/src/.venv
|
||||||
source /opt/"${APPLICATION}"/backend/src/.venv/bin/activate
|
source /opt/"${APPLICATION}"/backend/src/.venv/bin/activate
|
||||||
$STD uv pip install -r /opt/streamlink-webui/backend/src/requirements.txt --python=/opt/"${APPLICATION}"/backend/src/.venv
|
$STD uv pip install -r /opt/streamlink-webui/backend/src/requirements.txt --python=/opt/"${APPLICATION}"/backend/src/.venv
|
||||||
cd /opt/"${APPLICATION}"/frontend/src
|
cd /opt/"${APPLICATION}"/frontend/src
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ SECRET_KEY=$(openssl rand -base64 45 | sed 's/\//\\\//g')
|
|||||||
msg_info "Setup Tandoor"
|
msg_info "Setup Tandoor"
|
||||||
mkdir -p /opt/tandoor/{config,api,mediafiles,staticfiles}
|
mkdir -p /opt/tandoor/{config,api,mediafiles,staticfiles}
|
||||||
cd /opt/tandoor
|
cd /opt/tandoor
|
||||||
$STD uv venv .venv --python=python3
|
$STD uv venv --clear .venv --python=python3
|
||||||
$STD uv pip install -r requirements.txt --python .venv/bin/python
|
$STD uv pip install -r requirements.txt --python .venv/bin/python
|
||||||
cd /opt/tandoor/vue3
|
cd /opt/tandoor/vue3
|
||||||
$STD yarn install
|
$STD yarn install
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ cd /opt/Tautulli
|
|||||||
TAUTULLI_VERSION=$(get_latest_github_release "Tautulli/Tautulli" "false")
|
TAUTULLI_VERSION=$(get_latest_github_release "Tautulli/Tautulli" "false")
|
||||||
echo "${TAUTULLI_VERSION}" >/opt/Tautulli/version.txt
|
echo "${TAUTULLI_VERSION}" >/opt/Tautulli/version.txt
|
||||||
echo "master" >/opt/Tautulli/branch.txt
|
echo "master" >/opt/Tautulli/branch.txt
|
||||||
$STD uv venv
|
$STD uv venv --clear
|
||||||
$STD source /opt/Tautulli/.venv/bin/activate
|
$STD source /opt/Tautulli/.venv/bin/activate
|
||||||
$STD uv pip install -r requirements.txt
|
$STD uv pip install -r requirements.txt
|
||||||
$STD uv pip install pyopenssl
|
$STD uv pip install pyopenssl
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ msg_ok "Built Frontend"
|
|||||||
|
|
||||||
msg_info "Setting up Backend"
|
msg_info "Setting up Backend"
|
||||||
cd /opt/trip/backend
|
cd /opt/trip/backend
|
||||||
$STD uv venv /opt/trip/.venv
|
$STD uv venv --clear /opt/trip/.venv
|
||||||
$STD uv pip install --python /opt/trip/.venv/bin/python -r trip/requirements.txt
|
$STD uv pip install --python /opt/trip/.venv/bin/python -r trip/requirements.txt
|
||||||
msg_ok "Set up Backend"
|
msg_ok "Set up Backend"
|
||||||
|
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ fetch_and_deploy_gh_release "warracker" "sassanix/Warracker" "tarball" "latest"
|
|||||||
|
|
||||||
msg_info "Installing Warracker"
|
msg_info "Installing Warracker"
|
||||||
cd /opt/warracker/backend
|
cd /opt/warracker/backend
|
||||||
$STD uv venv .venv
|
$STD uv venv --clear .venv
|
||||||
$STD source .venv/bin/activate
|
$STD source .venv/bin/activate
|
||||||
$STD uv pip install -r requirements.txt
|
$STD uv pip install -r requirements.txt
|
||||||
mv /opt/warracker/env.example /opt/.env
|
mv /opt/warracker/env.example /opt/.env
|
||||||
|
|||||||
@@ -3078,10 +3078,10 @@ settings_menu() {
|
|||||||
|
|
||||||
case "$choice" in
|
case "$choice" in
|
||||||
1) diagnostics_menu ;;
|
1) diagnostics_menu ;;
|
||||||
2) nano /usr/local/community-scripts/default.vars ;;
|
2) ${EDITOR:-nano} /usr/local/community-scripts/default.vars ;;
|
||||||
3)
|
3)
|
||||||
if [ -f "$(get_app_defaults_path)" ]; then
|
if [ -f "$(get_app_defaults_path)" ]; then
|
||||||
nano "$(get_app_defaults_path)"
|
${EDITOR:-nano} "$(get_app_defaults_path)"
|
||||||
else
|
else
|
||||||
# Back was selected (no app.vars available)
|
# Back was selected (no app.vars available)
|
||||||
return
|
return
|
||||||
@@ -3351,19 +3351,21 @@ msg_menu() {
|
|||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Display menu
|
# Display menu to /dev/tty so it doesn't get captured by command substitution
|
||||||
echo ""
|
{
|
||||||
msg_custom "📋" "${BL}" "${title}"
|
echo ""
|
||||||
echo ""
|
msg_custom "📋" "${BL}" "${title}"
|
||||||
for i in "${!tags[@]}"; do
|
echo ""
|
||||||
local marker=" "
|
for i in "${!tags[@]}"; do
|
||||||
[[ $i -eq 0 ]] && marker="* "
|
local marker=" "
|
||||||
printf "${TAB3}${marker}%s) %s\n" "${tags[$i]}" "${descs[$i]}"
|
[[ $i -eq 0 ]] && marker="* "
|
||||||
done
|
printf "${TAB3}${marker}%s) %s\n" "${tags[$i]}" "${descs[$i]}"
|
||||||
echo ""
|
done
|
||||||
|
echo ""
|
||||||
|
} >/dev/tty
|
||||||
|
|
||||||
local selection=""
|
local selection=""
|
||||||
read -r -t 10 -p "${TAB3}Select [default=${default_tag}, timeout 10s]: " selection || true
|
read -r -t 10 -p "${TAB3}Select [default=${default_tag}, timeout 10s]: " selection </dev/tty >/dev/tty || true
|
||||||
|
|
||||||
# Validate selection
|
# Validate selection
|
||||||
if [[ -n "$selection" ]]; then
|
if [[ -n "$selection" ]]; then
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ install_glances_debian() {
|
|||||||
cd /opt
|
cd /opt
|
||||||
mkdir -p glances
|
mkdir -p glances
|
||||||
cd glances
|
cd glances
|
||||||
uv venv
|
uv venv --clear
|
||||||
source .venv/bin/activate >/dev/null 2>&1
|
source .venv/bin/activate >/dev/null 2>&1
|
||||||
uv pip install --upgrade pip wheel setuptools >/dev/null 2>&1
|
uv pip install --upgrade pip wheel setuptools >/dev/null 2>&1
|
||||||
uv pip install "glances[web]" >/dev/null 2>&1
|
uv pip install "glances[web]" >/dev/null 2>&1
|
||||||
@@ -126,7 +126,7 @@ install_glances_alpine() {
|
|||||||
cd /opt
|
cd /opt
|
||||||
mkdir -p glances
|
mkdir -p glances
|
||||||
cd glances
|
cd glances
|
||||||
uv venv
|
uv venv --clear
|
||||||
source .venv/bin/activate
|
source .venv/bin/activate
|
||||||
uv pip install --upgrade pip wheel setuptools >/dev/null 2>&1
|
uv pip install --upgrade pip wheel setuptools >/dev/null 2>&1
|
||||||
uv pip install "glances[web]" >/dev/null 2>&1
|
uv pip install "glances[web]" >/dev/null 2>&1
|
||||||
|
|||||||
188
tools/addon/prometheus-paperless-ngx-exporter.sh
Normal file
188
tools/addon/prometheus-paperless-ngx-exporter.sh
Normal file
@@ -0,0 +1,188 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2026 community-scripts ORG
|
||||||
|
# Author: Andy Grunwald (andygrunwald)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/hansmi/prometheus-paperless-exporter
|
||||||
|
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/core.func)
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func)
|
||||||
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/error_handler.func)
|
||||||
|
|
||||||
|
# Enable error handling
|
||||||
|
set -Eeuo pipefail
|
||||||
|
trap 'error_handler' ERR
|
||||||
|
load_functions
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# CONFIGURATION
|
||||||
|
# ==============================================================================
|
||||||
|
VERBOSE=${var_verbose:-no}
|
||||||
|
APP="prometheus-paperless-ngx-exporter"
|
||||||
|
APP_TYPE="tools"
|
||||||
|
BINARY_PATH="/usr/bin/prometheus-paperless-exporter"
|
||||||
|
CONFIG_PATH="/etc/prometheus-paperless-ngx-exporter/config.env"
|
||||||
|
SERVICE_PATH="/etc/systemd/system/prometheus-paperless-ngx-exporter.service"
|
||||||
|
AUTH_TOKEN_FILE="/etc/prometheus-paperless-ngx-exporter/paperless_auth_token_file"
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# OS DETECTION
|
||||||
|
# ==============================================================================
|
||||||
|
if ! grep -qE 'ID=debian|ID=ubuntu' /etc/os-release 2>/dev/null; then
|
||||||
|
echo -e "${CROSS} Unsupported OS detected. This script only supports Debian and Ubuntu."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# UNINSTALL
|
||||||
|
# ==============================================================================
|
||||||
|
function uninstall() {
|
||||||
|
msg_info "Uninstalling Prometheus-Paperless-NGX-Exporter"
|
||||||
|
systemctl disable -q --now prometheus-paperless-ngx-exporter
|
||||||
|
|
||||||
|
if dpkg -l | grep -q prometheus-paperless-exporter; then
|
||||||
|
$STD apt-get remove -y prometheus-paperless-exporter || $STD dpkg -r prometheus-paperless-exporter
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -f "$SERVICE_PATH"
|
||||||
|
rm -rf /etc/prometheus-paperless-ngx-exporter
|
||||||
|
rm -f "/usr/local/bin/update_prometheus-paperless-ngx-exporter"
|
||||||
|
rm -f "$HOME/.prometheus-paperless-ngx-exporter"
|
||||||
|
msg_ok "Prometheus-Paperless-NGX-Exporter has been uninstalled"
|
||||||
|
}
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# UPDATE
|
||||||
|
# ==============================================================================
|
||||||
|
function update() {
|
||||||
|
if check_for_gh_release "prom-paperless-exp" "hansmi/prometheus-paperless-exporter"; then
|
||||||
|
msg_info "Stopping service"
|
||||||
|
systemctl stop prometheus-paperless-ngx-exporter
|
||||||
|
msg_ok "Stopped service"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "prom-paperless-exp" "hansmi/prometheus-paperless-exporter" "binary" "latest"
|
||||||
|
|
||||||
|
msg_info "Starting service"
|
||||||
|
systemctl start prometheus-paperless-ngx-exporter
|
||||||
|
msg_ok "Started service"
|
||||||
|
msg_ok "Updated successfully!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# INSTALL
|
||||||
|
# ==============================================================================
|
||||||
|
function install() {
|
||||||
|
read -erp "Enter URL of Paperless-NGX, example: (http://127.0.0.1:8000): " PAPERLESS_URL
|
||||||
|
read -rsp "Enter Paperless-NGX authentication token: " PAPERLESS_AUTH_TOKEN
|
||||||
|
printf "\n"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "prom-paperless-exp" "hansmi/prometheus-paperless-exporter" "binary" "latest"
|
||||||
|
|
||||||
|
msg_info "Creating configuration"
|
||||||
|
mkdir -p /etc/prometheus-paperless-ngx-exporter
|
||||||
|
cat <<EOF >"$CONFIG_PATH"
|
||||||
|
# https://github.com/hansmi/prometheus-paperless-exporter
|
||||||
|
PAPERLESS_URL="${PAPERLESS_URL}"
|
||||||
|
EOF
|
||||||
|
echo "${PAPERLESS_AUTH_TOKEN}" >"$AUTH_TOKEN_FILE"
|
||||||
|
chmod 600 "$AUTH_TOKEN_FILE"
|
||||||
|
msg_ok "Created configuration"
|
||||||
|
|
||||||
|
msg_info "Creating service"
|
||||||
|
cat <<EOF >"$SERVICE_PATH"
|
||||||
|
[Unit]
|
||||||
|
Description=Prometheus Paperless NGX Exporter
|
||||||
|
Wants=network-online.target
|
||||||
|
After=network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User=root
|
||||||
|
EnvironmentFile=$CONFIG_PATH
|
||||||
|
ExecStart=$BINARY_PATH \\
|
||||||
|
--paperless_url=\${PAPERLESS_URL} \\
|
||||||
|
--paperless_auth_token_file=$AUTH_TOKEN_FILE
|
||||||
|
Restart=always
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl enable -q --now prometheus-paperless-ngx-exporter
|
||||||
|
msg_ok "Created and started service"
|
||||||
|
|
||||||
|
# Create update script
|
||||||
|
msg_info "Creating update script"
|
||||||
|
ensure_usr_local_bin_persist
|
||||||
|
cat <<'UPDATEEOF' >/usr/local/bin/update_prometheus-paperless-ngx-exporter
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# prometheus-paperless-ngx-exporter Update Script
|
||||||
|
type=update bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/prometheus-paperless-ngx-exporter.sh)"
|
||||||
|
UPDATEEOF
|
||||||
|
chmod +x /usr/local/bin/update_prometheus-paperless-ngx-exporter
|
||||||
|
msg_ok "Created update script (/usr/local/bin/update_prometheus-paperless-ngx-exporter)"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
msg_ok "Prometheus-Paperless-NGX-Exporter installed successfully"
|
||||||
|
msg_ok "Metrics: ${BL}http://${LOCAL_IP}:8081/metrics${CL}"
|
||||||
|
msg_ok "Config: ${BL}${CONFIG_PATH}${CL}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# MAIN
|
||||||
|
# ==============================================================================
|
||||||
|
header_info
|
||||||
|
ensure_usr_local_bin_persist
|
||||||
|
get_lxc_ip
|
||||||
|
|
||||||
|
# Handle type=update (called from update script)
|
||||||
|
if [[ "${type:-}" == "update" ]]; then
|
||||||
|
if [[ -f "$BINARY_PATH" ]]; then
|
||||||
|
update
|
||||||
|
else
|
||||||
|
msg_error "Prometheus-Paperless-NGX-Exporter is not installed. Nothing to update."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if already installed
|
||||||
|
if [[ -f "$BINARY_PATH" ]]; then
|
||||||
|
msg_warn "Prometheus-Paperless-NGX-Exporter is already installed."
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo -n "${TAB}Uninstall Prometheus-Paperless-NGX-Exporter? (y/N): "
|
||||||
|
read -r uninstall_prompt
|
||||||
|
if [[ "${uninstall_prompt,,}" =~ ^(y|yes)$ ]]; then
|
||||||
|
uninstall
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -n "${TAB}Update Prometheus-Paperless-NGX-Exporter? (y/N): "
|
||||||
|
read -r update_prompt
|
||||||
|
if [[ "${update_prompt,,}" =~ ^(y|yes)$ ]]; then
|
||||||
|
update
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg_warn "No action selected. Exiting."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Fresh installation
|
||||||
|
msg_warn "Prometheus-Paperless-NGX-Exporter is not installed."
|
||||||
|
echo ""
|
||||||
|
echo -e "${TAB}${INFO} This will install:"
|
||||||
|
echo -e "${TAB} - Prometheus Paperless NGX Exporter (binary)"
|
||||||
|
echo -e "${TAB} - Systemd service"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo -n "${TAB}Install Prometheus-Paperless-NGX-Exporter? (y/N): "
|
||||||
|
read -r install_prompt
|
||||||
|
if [[ "${install_prompt,,}" =~ ^(y|yes)$ ]]; then
|
||||||
|
install
|
||||||
|
else
|
||||||
|
msg_warn "Installation cancelled. Exiting."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
6
tools/headers/prometheus-paperless-ngx-exporter
Normal file
6
tools/headers/prometheus-paperless-ngx-exporter
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
__ __ __ __
|
||||||
|
____ _________ ____ ___ ___ / /_/ /_ ___ __ _______ ____ ____ _____ ___ _____/ /__ __________ ____ ____ __ __ ___ _ ______ ____ _____/ /____ _____
|
||||||
|
/ __ \/ ___/ __ \/ __ `__ \/ _ \/ __/ __ \/ _ \/ / / / ___/_____/ __ \/ __ `/ __ \/ _ \/ ___/ / _ \/ ___/ ___/_____/ __ \/ __ `/ |/_/_____/ _ \| |/_/ __ \/ __ \/ ___/ __/ _ \/ ___/
|
||||||
|
/ /_/ / / / /_/ / / / / / / __/ /_/ / / / __/ /_/ (__ )_____/ /_/ / /_/ / /_/ / __/ / / / __(__ |__ )_____/ / / / /_/ /> </_____/ __/> </ /_/ / /_/ / / / /_/ __/ /
|
||||||
|
/ .___/_/ \____/_/ /_/ /_/\___/\__/_/ /_/\___/\__,_/____/ / .___/\__,_/ .___/\___/_/ /_/\___/____/____/ /_/ /_/\__, /_/|_| \___/_/|_/ .___/\____/_/ \__/\___/_/
|
||||||
|
/_/ /_/ /_/ /____/ /_/
|
||||||
@@ -131,7 +131,7 @@ function detect_service() {
|
|||||||
|
|
||||||
function backup_container() {
|
function backup_container() {
|
||||||
msg_info "Creating backup for container $1"
|
msg_info "Creating backup for container $1"
|
||||||
vzdump $1 --compress zstd --storage $STORAGE_CHOICE -notes-template "community-scripts backup updater" >/dev/null 2>&1
|
vzdump $1 --compress zstd --storage $STORAGE_CHOICE -notes-template "{{guestname}} - community-scripts backup updater" >/dev/null 2>&1
|
||||||
status=$?
|
status=$?
|
||||||
|
|
||||||
if [ $status -eq 0 ]; then
|
if [ $status -eq 0 ]; then
|
||||||
@@ -151,11 +151,11 @@ function get_backup_storages() {
|
|||||||
split($0, a, ":")
|
split($0, a, ":")
|
||||||
type = a[1]
|
type = a[1]
|
||||||
name = a[2]
|
name = a[2]
|
||||||
sub(/^ +/, "", name)
|
gsub(/^[ \t]+|[ \t]+$/, "", name)
|
||||||
has_content = 0
|
has_content = 0
|
||||||
has_backup = 0
|
has_backup = 0
|
||||||
}
|
}
|
||||||
/^ +content/ {
|
/^[ \t]*content/ {
|
||||||
has_content = 1
|
has_content = 1
|
||||||
if ($0 ~ /backup/) has_backup = 1
|
if ($0 ~ /backup/) has_backup = 1
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user