mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-02-13 16:53:27 +01:00
Compare commits
1 Commits
fix-kasm-v
...
fix/elemen
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4b6c6e8765 |
12
.github/workflows/update-versions-github.yml
generated
vendored
12
.github/workflows/update-versions-github.yml
generated
vendored
@@ -89,15 +89,9 @@ 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 script (install script or addon script)
|
# Find corresponding install script
|
||||||
install_script=""
|
install_script="install/${slug}-install.sh"
|
||||||
if [[ -f "install/${slug}-install.sh" ]]; then
|
[[ ! -f "$install_script" ]] && continue
|
||||||
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"]
|
||||||
|
|||||||
43
CHANGELOG.md
43
CHANGELOG.md
@@ -401,52 +401,11 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## 2026-02-11
|
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
|
||||||
|
|
||||||
- #### 🐞 Bug Fixes
|
|
||||||
|
|
||||||
- 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))
|
|
||||||
|
|
||||||
### 📚 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
|
## 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
|
### 🗑️ Deleted Scripts
|
||||||
|
|
||||||
- move paperless-exporter from LXC to addon ([#11737](https://github.com/community-scripts/ProxmoxVE/pull/11737))
|
- paperless-exporter ([#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
|
||||||
|
|
||||||
|
|||||||
@@ -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.6"
|
RELEASE="2.5.5"
|
||||||
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"
|
||||||
|
|||||||
11
ct/kasm.sh
11
ct/kasm.sh
@@ -34,19 +34,10 @@ 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"
|
||||||
|
|||||||
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://github.com/mrusse/soularr
|
# Source: https://github.com/slskd/slskd, https://soularr.net
|
||||||
|
|
||||||
APP="slskd"
|
APP="slskd"
|
||||||
var_tags="${var_tags:-arr;p2p}"
|
var_tags="${var_tags:-arr;p2p}"
|
||||||
@@ -24,65 +24,50 @@ function update_script() {
|
|||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
if [[ ! -d /opt/slskd ]]; then
|
if [[ ! -d /opt/slskd ]] || [[ ! -d /opt/soularr ]]; then
|
||||||
msg_error "No Slskd Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if check_for_gh_release "Slskd" "slskd/slskd"; then
|
RELEASE=$(curl -s https://api.github.com/repos/slskd/slskd/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
msg_info "Stopping Service(s)"
|
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
||||||
systemctl stop slskd
|
msg_info "Stopping Service"
|
||||||
[[ -f /etc/systemd/system/soularr.service ]] && systemctl stop soularr.timer soularr.service
|
systemctl stop slskd soularr.timer soularr.service
|
||||||
msg_ok "Stopped Service(s)"
|
msg_info "Stopped Service"
|
||||||
|
|
||||||
msg_info "Backing up config"
|
msg_info "Updating $APP to v${RELEASE}"
|
||||||
cp /opt/slskd/config/slskd.yml /opt/slskd.yml.bak
|
tmp_file=$(mktemp)
|
||||||
msg_ok "Backed up config"
|
curl -fsSL "https://github.com/slskd/slskd/releases/download/${RELEASE}/slskd-${RELEASE}-linux-x64.zip" -o $tmp_file
|
||||||
|
$STD unzip -oj $tmp_file slskd -d /opt/${APP}
|
||||||
|
echo "${RELEASE}" >/opt/${APP}_version.txt
|
||||||
|
msg_ok "Updated $APP to v${RELEASE}"
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Slskd" "slskd/slskd" "prebuild" "latest" "/opt/slskd" "slskd-*-linux-x64.zip"
|
msg_info "Starting Service"
|
||||||
|
|
||||||
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
|
||||||
[[ -f /etc/systemd/system/soularr.service ]] && systemctl start soularr.timer
|
msg_ok "Started Service"
|
||||||
msg_ok "Started Service(s)"
|
rm -rf $tmp_file
|
||||||
msg_ok "Updated Slskd successfully!"
|
else
|
||||||
|
msg_ok "No ${APP} update required. ${APP} is already at v${RELEASE}"
|
||||||
fi
|
fi
|
||||||
[[ -d /opt/soularr ]] && if check_for_gh_release "Soularr" "mrusse/soularr"; then
|
msg_info "Updating Soularr"
|
||||||
if systemctl is-active soularr.timer >/dev/null; then
|
cp /opt/soularr/config.ini /opt/config.ini.bak
|
||||||
msg_info "Stopping Timer and Service"
|
cp /opt/soularr/run.sh /opt/run.sh.bak
|
||||||
systemctl stop soularr.timer soularr.service
|
cd /tmp
|
||||||
msg_ok "Stopped Timer and Service"
|
rm -rf /opt/soularr
|
||||||
fi
|
curl -fsSL -o main.zip https://github.com/mrusse/soularr/archive/refs/heads/main.zip
|
||||||
|
$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 "Backing up Soularr config"
|
msg_info "Starting soularr timer"
|
||||||
cp /opt/soularr/config.ini /opt/soularr_config.ini.bak
|
systemctl start soularr.timer
|
||||||
cp /opt/soularr/run.sh /opt/soularr_run.sh.bak
|
msg_ok "Started soularr timer"
|
||||||
msg_ok "Backed up Soularr config"
|
exit
|
||||||
|
|
||||||
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,15 +33,7 @@ function update_script() {
|
|||||||
systemctl stop snowshare
|
systemctl stop snowshare
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
msg_info "Backing up uploads"
|
fetch_and_deploy_gh_release "snowshare" "TuroYT/snowshare" "tarball"
|
||||||
[ -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
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"generated": "2026-02-11T06:25:53Z",
|
"generated": "2026-02-10T12:19:02Z",
|
||||||
"versions": [
|
"versions": [
|
||||||
{
|
{
|
||||||
"slug": "2fauth",
|
"slug": "2fauth",
|
||||||
@@ -15,13 +15,6 @@
|
|||||||
"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",
|
||||||
@@ -207,9 +200,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "comfyui",
|
"slug": "comfyui",
|
||||||
"repo": "comfyanonymous/ComfyUI",
|
"repo": "comfyanonymous/ComfyUI",
|
||||||
"version": "v0.13.0",
|
"version": "v0.12.3",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-10T20:27:38Z"
|
"date": "2026-02-05T07:04:07Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "commafeed",
|
"slug": "commafeed",
|
||||||
@@ -270,9 +263,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "dispatcharr",
|
"slug": "dispatcharr",
|
||||||
"repo": "Dispatcharr/Dispatcharr",
|
"repo": "Dispatcharr/Dispatcharr",
|
||||||
"version": "v0.19.0",
|
"version": "v0.18.1",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-10T21:18:10Z"
|
"date": "2026-01-27T17:09:11Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "docmost",
|
"slug": "docmost",
|
||||||
@@ -298,9 +291,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "donetick",
|
"slug": "donetick",
|
||||||
"repo": "donetick/donetick",
|
"repo": "donetick/donetick",
|
||||||
"version": "v0.1.71",
|
"version": "v0.1.64",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-11T06:01:13Z"
|
"date": "2025-10-03T05:18:24Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "duplicati",
|
"slug": "duplicati",
|
||||||
@@ -326,9 +319,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "endurain",
|
"slug": "endurain",
|
||||||
"repo": "endurain-project/endurain",
|
"repo": "endurain-project/endurain",
|
||||||
"version": "v0.17.4",
|
"version": "v0.17.3",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-11T04:54:22Z"
|
"date": "2026-01-23T22:02:05Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "ersatztv",
|
"slug": "ersatztv",
|
||||||
@@ -540,13 +533,6 @@
|
|||||||
"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",
|
||||||
@@ -571,16 +557,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "jackett",
|
"slug": "jackett",
|
||||||
"repo": "Jackett/Jackett",
|
"repo": "Jackett/Jackett",
|
||||||
"version": "v0.24.1094",
|
"version": "v0.24.1089",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-11T06:01:16Z"
|
"date": "2026-02-10T05:55:59Z"
|
||||||
},
|
|
||||||
{
|
|
||||||
"slug": "jellystat",
|
|
||||||
"repo": "CyferShepard/Jellystat",
|
|
||||||
"version": "V1.1.8",
|
|
||||||
"pinned": false,
|
|
||||||
"date": "2026-02-08T08:15:00Z"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "joplin-server",
|
"slug": "joplin-server",
|
||||||
@@ -704,9 +683,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "libretranslate",
|
"slug": "libretranslate",
|
||||||
"repo": "LibreTranslate/LibreTranslate",
|
"repo": "LibreTranslate/LibreTranslate",
|
||||||
"version": "v1.9.0",
|
"version": "v1.8.4",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-10T19:05:48Z"
|
"date": "2026-02-02T17:45:16Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "lidarr",
|
"slug": "lidarr",
|
||||||
@@ -739,9 +718,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "lubelogger",
|
"slug": "lubelogger",
|
||||||
"repo": "hargata/lubelog",
|
"repo": "hargata/lubelog",
|
||||||
"version": "v1.6.0",
|
"version": "v1.5.9",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-10T20:16:32Z"
|
"date": "2026-02-09T17:36:13Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "mafl",
|
"slug": "mafl",
|
||||||
@@ -760,9 +739,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "mail-archiver",
|
"slug": "mail-archiver",
|
||||||
"repo": "s1t5/mail-archiver",
|
"repo": "s1t5/mail-archiver",
|
||||||
"version": "2602.1",
|
"version": "2601.3",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-11T06:23:11Z"
|
"date": "2026-01-25T12:52:24Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "managemydamnlife",
|
"slug": "managemydamnlife",
|
||||||
@@ -858,9 +837,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "navidrome",
|
"slug": "navidrome",
|
||||||
"repo": "navidrome/navidrome",
|
"repo": "navidrome/navidrome",
|
||||||
"version": "v0.60.3",
|
"version": "v0.60.2",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-10T23:55:04Z"
|
"date": "2026-02-07T19:42:33Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "netbox",
|
"slug": "netbox",
|
||||||
@@ -869,13 +848,6 @@
|
|||||||
"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",
|
||||||
@@ -1065,13 +1037,6 @@
|
|||||||
"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",
|
||||||
@@ -1135,13 +1100,6 @@
|
|||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2025-12-06T13:32:18Z"
|
"date": "2025-12-06T13:32:18Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"slug": "prometheus-paperless-ngx-exporter",
|
|
||||||
"repo": "hansmi/prometheus-paperless-exporter",
|
|
||||||
"version": "v0.0.9",
|
|
||||||
"pinned": false,
|
|
||||||
"date": "2025-12-08T20:37:45Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"slug": "prowlarr",
|
"slug": "prowlarr",
|
||||||
"repo": "Prowlarr/Prowlarr",
|
"repo": "Prowlarr/Prowlarr",
|
||||||
@@ -1166,9 +1124,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "pulse",
|
"slug": "pulse",
|
||||||
"repo": "rcourtman/Pulse",
|
"repo": "rcourtman/Pulse",
|
||||||
"version": "v5.1.8",
|
"version": "v5.1.7",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-10T22:37:58Z"
|
"date": "2026-02-10T09:59:55Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "pve-scripts-local",
|
"slug": "pve-scripts-local",
|
||||||
@@ -1184,13 +1142,6 @@
|
|||||||
"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",
|
||||||
@@ -1278,16 +1229,16 @@
|
|||||||
{
|
{
|
||||||
"slug": "scanopy",
|
"slug": "scanopy",
|
||||||
"repo": "scanopy/scanopy",
|
"repo": "scanopy/scanopy",
|
||||||
"version": "v0.14.4",
|
"version": "v0.14.3",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-10T03:57:28Z"
|
"date": "2026-02-04T01:41:01Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "scraparr",
|
"slug": "scraparr",
|
||||||
"repo": "thecfu/scraparr",
|
"repo": "thecfu/scraparr",
|
||||||
"version": "v3.0.0",
|
"version": "v2.2.5",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-10T22:30:44Z"
|
"date": "2025-10-07T12:34:31Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "seelf",
|
"slug": "seelf",
|
||||||
@@ -1324,13 +1275,6 @@
|
|||||||
"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",
|
||||||
@@ -1341,9 +1285,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "snowshare",
|
"slug": "snowshare",
|
||||||
"repo": "TuroYT/snowshare",
|
"repo": "TuroYT/snowshare",
|
||||||
"version": "v1.3.4",
|
"version": "v1.3.3",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-10T14:17:26Z"
|
"date": "2026-02-09T10:52:12Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "sonarr",
|
"slug": "sonarr",
|
||||||
@@ -1467,9 +1411,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "tracearr",
|
"slug": "tracearr",
|
||||||
"repo": "connorgallopo/Tracearr",
|
"repo": "connorgallopo/Tracearr",
|
||||||
"version": "v1.4.17",
|
"version": "v1.4.12",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-11T01:33:21Z"
|
"date": "2026-01-28T23:29:37Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "tracktor",
|
"slug": "tracktor",
|
||||||
@@ -1495,9 +1439,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "trip",
|
"slug": "trip",
|
||||||
"repo": "itskovacs/TRIP",
|
"repo": "itskovacs/TRIP",
|
||||||
"version": "1.40.0",
|
"version": "1.39.0",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-10T20:12:53Z"
|
"date": "2026-02-07T16:59:51Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "tududi",
|
"slug": "tududi",
|
||||||
@@ -1558,9 +1502,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "vaultwarden",
|
"slug": "vaultwarden",
|
||||||
"repo": "dani-garcia/vaultwarden",
|
"repo": "dani-garcia/vaultwarden",
|
||||||
"version": "1.35.3",
|
"version": "1.35.2",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-10T20:37:03Z"
|
"date": "2026-01-09T18:37:04Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "victoriametrics",
|
"slug": "victoriametrics",
|
||||||
@@ -1586,9 +1530,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "wallos",
|
"slug": "wallos",
|
||||||
"repo": "ellite/Wallos",
|
"repo": "ellite/Wallos",
|
||||||
"version": "v4.6.1",
|
"version": "v4.6.0",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-10T21:06:46Z"
|
"date": "2025-12-20T15:57:51Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"slug": "wanderer",
|
"slug": "wanderer",
|
||||||
@@ -1698,9 +1642,9 @@
|
|||||||
{
|
{
|
||||||
"slug": "zipline",
|
"slug": "zipline",
|
||||||
"repo": "diced/zipline",
|
"repo": "diced/zipline",
|
||||||
"version": "v4.4.2",
|
"version": "v4.4.1",
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"date": "2026-02-11T04:58:54Z"
|
"date": "2026-01-20T01:29:01Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"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 proxy 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 porxy to port 3000).",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "Slskd",
|
"name": "slskd",
|
||||||
"slug": "slskd",
|
"slug": "slskd",
|
||||||
"categories": [
|
"categories": [
|
||||||
11
|
11
|
||||||
@@ -35,6 +35,10 @@
|
|||||||
{
|
{
|
||||||
"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.",
|
||||||
|
|||||||
@@ -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.6" "$SRC_DIR"
|
fetch_and_deploy_gh_release "Immich" "immich-app/immich" "tarball" "v2.5.5" "$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
|
||||||
|
|
||||||
|
|||||||
@@ -20,19 +20,10 @@ 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/)."
|
||||||
|
|||||||
@@ -37,13 +37,18 @@ 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 --clear .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
|
$STD uv pip install --upgrade pip setuptools
|
||||||
$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
|
||||||
|
|||||||
@@ -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://github.com/mrusse/soularr
|
# Source: https://github.com/slskd/slskd/, https://soularr.net
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "Slskd" "slskd/slskd" "prebuild" "latest" "/opt/slskd" "slskd-*-linux-x64.zip"
|
msg_info "Installing Dependencies"
|
||||||
|
$STD apt install -y \
|
||||||
|
python3-pip
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Configuring Slskd"
|
msg_info "Setup ${APPLICATION}"
|
||||||
|
tmp_file=$(mktemp)
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/slskd/slskd/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
|
curl -fsSL "https://github.com/slskd/slskd/releases/download/${RELEASE}/slskd-${RELEASE}-linux-x64.zip" -o $tmp_file
|
||||||
|
$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/slskd/config/slskd.example.yml /opt/slskd/config/slskd.yml
|
cp /opt/${APPLICATION}/config/slskd.example.yml /opt/${APPLICATION}/config/slskd.yml
|
||||||
sed -i \
|
sed -i \
|
||||||
-e '/web:/,/cidr/s/^# //' \
|
-e "\|web:|,\|cidr|s|^#||" \
|
||||||
-e '/https:/,/port: 5031/s/false/true/' \
|
-e "\|https:|,\|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 '/soulseek/,/write_queue/s/^# //' \
|
-e "s|^ picture|# picture|" \
|
||||||
-e 's/^.*picture/#&/' /opt/slskd/config/slskd.yml
|
/opt/${APPLICATION}/config/slskd.yml
|
||||||
msg_ok "Configured Slskd"
|
msg_ok "Setup ${APPLICATION}"
|
||||||
|
|
||||||
read -rp "${TAB3}Do you want to install Soularr? y/N " soularr
|
msg_info "Installing Soularr"
|
||||||
if [[ ${soularr,,} =~ ^(y|yes)$ ]]; then
|
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||||
PYTHON_VERSION="3.11" setup_uv
|
cd /tmp
|
||||||
fetch_and_deploy_gh_release "Soularr" "mrusse/soularr" "tarball" "latest" "/opt/soularr"
|
curl -fsSL -o main.zip https://github.com/mrusse/soularr/archive/refs/heads/main.zip
|
||||||
cd /opt/soularr
|
$STD unzip main.zip
|
||||||
$STD uv venv venv
|
mv soularr-main /opt/soularr
|
||||||
$STD source venv/bin/activate
|
cd /opt/soularr
|
||||||
$STD uv pip install -r requirements.txt
|
$STD 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
|
||||||
cat <<EOF >/opt/soularr/run.sh
|
sed -i \
|
||||||
#!/usr/bin/env bash
|
-e "/#This\|#Default\|INTERVAL/{N;d;}" \
|
||||||
|
-e "/while\|#Pass/d" \
|
||||||
|
-e "\|python|s|app|opt/soularr|; s|python|python3|" \
|
||||||
|
-e "/dt/,+2d" \
|
||||||
|
/opt/soularr/run.sh
|
||||||
|
sed -i -E "/(soularr.py)/s/.{5}$//; /if/,/fi/s/.{4}//" /opt/soularr/run.sh
|
||||||
|
chmod +x /opt/soularr/run.sh
|
||||||
|
msg_ok "Installed Soularr"
|
||||||
|
|
||||||
if ps aux | grep "[s]oularr.py" >/dev/null; then
|
msg_info "Creating Services"
|
||||||
echo "Soularr is already running. Exiting..."
|
cat <<EOF >/etc/systemd/system/${APPLICATION}.service
|
||||||
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=Slskd Service
|
Description=${APPLICATION} Service
|
||||||
After=network.target
|
After=network.target
|
||||||
Wants=network.target
|
Wants=network.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
WorkingDirectory=/opt/slskd
|
WorkingDirectory=/opt/${APPLICATION}
|
||||||
ExecStart=/opt/slskd/slskd --config /opt/slskd/config/slskd.yml
|
ExecStart=/opt/${APPLICATION}/slskd --config /opt/${APPLICATION}/config/slskd.yml
|
||||||
Restart=always
|
Restart=always
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
if [[ -d /opt/soularr ]]; then
|
cat <<EOF >/etc/systemd/system/soularr.timer
|
||||||
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 10 minutes
|
# run every 5 minutes
|
||||||
OnCalendar=*-*-* *:0/10:00
|
OnCalendar=*-*-* *:0/5: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,9 +106,10 @@ ExecStart=/bin/bash -c /opt/soularr/run.sh
|
|||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
msg_warn "Add your Lidarr API key to Soularr in '/opt/soularr/config.ini', then run 'systemctl enable --now soularr.timer'"
|
systemctl enable -q --now ${APPLICATION}
|
||||||
fi
|
systemctl enable -q soularr.timer
|
||||||
systemctl enable -q --now slskd
|
rm -rf $tmp_file
|
||||||
|
rm -rf /tmp/main.zip
|
||||||
msg_ok "Created Services"
|
msg_ok "Created Services"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -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 "{{guestname}} - community-scripts backup updater" >/dev/null 2>&1
|
vzdump $1 --compress zstd --storage $STORAGE_CHOICE -notes-template "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]
|
||||||
gsub(/^[ \t]+|[ \t]+$/, "", name)
|
sub(/^ +/, "", name)
|
||||||
has_content = 0
|
has_content = 0
|
||||||
has_backup = 0
|
has_backup = 0
|
||||||
}
|
}
|
||||||
/^[ \t]*content/ {
|
/^ +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