Compare commits

...

16 Commits

Author SHA1 Message Date
community-scripts-pr-app[bot]
2645f4cf4d Update CHANGELOG.md (#11779)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-11 00:26:43 +00:00
community-scripts-pr-app[bot]
a0b55b6934 chore: update github-versions.json (#11778)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-11 00:26:14 +00:00
community-scripts-pr-app[bot]
b263dc25fe Update CHANGELOG.md (#11777)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-10 22:05:48 +00:00
Chris
ac308c931e Refactor: Slskd & Soularr (#11674) 2026-02-10 23:04:56 +01:00
Chris
a16dfb6d82 Immich: Pin version to 2.5.6 (#11775) 2026-02-10 22:43:15 +01:00
community-scripts-pr-app[bot]
63e9bc3729 Update CHANGELOG.md (#11773)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-10 19:55:15 +00:00
Slaviša Arežina
3735f9251b Fix setuptools (#11772) 2026-02-10 20:54:30 +01:00
community-scripts-pr-app[bot]
fc2559c702 Update CHANGELOG.md (#11770)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-10 18:31:37 +00:00
carlosmaroot
5f2d463408 feat: enhance backup notes with guest name and improve whitespace handling and content line matching in container parsing. (#11752) 2026-02-10 19:30:54 +01:00
community-scripts-pr-app[bot]
69e0dc6968 chore: update github-versions.json (#11769)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-10 18:25:11 +00:00
community-scripts-pr-app[bot]
fccb8a923a Update CHANGELOG.md (#11766)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-10 14:27:13 +00:00
CanbiZ (MickLesk)
53dbb9d705 fix(elementsynapse): prevent systemd invoke failure during apt install in LXC (#11758) 2026-02-10 15:26:22 +01:00
community-scripts-pr-app[bot]
236c5296b8 Update CHANGELOG.md (#11764)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-10 14:19:46 +00:00
CanbiZ (MickLesk)
76c7e3a67f fix(workflow): include addon scripts in github-versions extraction (#11757) 2026-02-10 15:19:09 +01:00
community-scripts-pr-app[bot]
4dbb139c60 Update CHANGELOG.md (#11759)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-10 12:33:09 +00:00
BirdMakingStuff
c581704fdd Snowshare: fix typo in config file path on website (#11754)
* fix: Fixed typo in snowshare systemd service

* Revert "fix: Fixed typo in snowshare systemd service"

This reverts commit cce1449caa.

* update config_path of snowshare.json instead

* fix formatting issue
2026-02-10 13:32:42 +01:00
12 changed files with 238 additions and 133 deletions

View File

@@ -89,9 +89,15 @@ jobs:
slug=$(jq -r '.slug // empty' "$json_file" 2>/dev/null)
[[ -z "$slug" ]] && continue
# Find corresponding install script
install_script="install/${slug}-install.sh"
[[ ! -f "$install_script" ]] && continue
# Find corresponding script (install script or addon script)
install_script=""
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
# Pattern: fetch_and_deploy_gh_release "app" "owner/repo" ["mode"] ["version"]

View File

@@ -401,11 +401,41 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
</details>
## 2026-02-11
## 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
- paperless-exporter ([#11737](https://github.com/community-scripts/ProxmoxVE/pull/11737))
- 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

View File

@@ -105,7 +105,7 @@ EOF
msg_ok "Image-processing libraries up to date"
fi
RELEASE="2.5.5"
RELEASE="2.5.6"
if check_for_gh_release "Immich" "immich-app/immich" "${RELEASE}"; then
if [[ $(cat ~/.immich) > "2.5.1" ]]; then
msg_info "Enabling Maintenance Mode"

View File

@@ -3,7 +3,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
# Copyright (c) 2021-2026 community-scripts ORG
# Author: vhsdream
# 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"
var_tags="${var_tags:-arr;p2p}"
@@ -24,50 +24,65 @@ function update_script() {
check_container_storage
check_container_resources
if [[ ! -d /opt/slskd ]] || [[ ! -d /opt/soularr ]]; then
msg_error "No ${APP} Installation Found!"
if [[ ! -d /opt/slskd ]]; then
msg_error "No Slskd Installation Found!"
exit
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 [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
msg_info "Stopping Service"
systemctl stop slskd soularr.timer soularr.service
msg_info "Stopped Service"
if check_for_gh_release "Slskd" "slskd/slskd"; then
msg_info "Stopping Service(s)"
systemctl stop slskd
[[ -f /etc/systemd/system/soularr.service ]] && systemctl stop soularr.timer soularr.service
msg_ok "Stopped Service(s)"
msg_info "Updating $APP to v${RELEASE}"
tmp_file=$(mktemp)
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}"
msg_info "Backing up config"
cp /opt/slskd/config/slskd.yml /opt/slskd.yml.bak
msg_ok "Backed up config"
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
msg_ok "Started Service"
rm -rf $tmp_file
else
msg_ok "No ${APP} update required. ${APP} is already at v${RELEASE}"
[[ -f /etc/systemd/system/soularr.service ]] && systemctl start soularr.timer
msg_ok "Started Service(s)"
msg_ok "Updated Slskd successfully!"
fi
msg_info "Updating Soularr"
cp /opt/soularr/config.ini /opt/config.ini.bak
cp /opt/soularr/run.sh /opt/run.sh.bak
cd /tmp
rm -rf /opt/soularr
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"
[[ -d /opt/soularr ]] && if check_for_gh_release "Soularr" "mrusse/soularr"; then
if systemctl is-active soularr.timer >/dev/null; then
msg_info "Stopping Timer and Service"
systemctl stop soularr.timer soularr.service
msg_ok "Stopped Timer and Service"
fi
msg_info "Starting soularr timer"
systemctl start soularr.timer
msg_ok "Started soularr timer"
exit
msg_info "Backing up Soularr config"
cp /opt/soularr/config.ini /opt/soularr_config.ini.bak
cp /opt/soularr/run.sh /opt/soularr_run.sh.bak
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

View File

@@ -1,5 +1,5 @@
{
"generated": "2026-02-10T12:19:02Z",
"generated": "2026-02-11T00:26:07Z",
"versions": [
{
"slug": "2fauth",
@@ -15,6 +15,13 @@
"pinned": false,
"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",
"repo": "seanmorley15/adventurelog",
@@ -200,9 +207,9 @@
{
"slug": "comfyui",
"repo": "comfyanonymous/ComfyUI",
"version": "v0.12.3",
"version": "v0.13.0",
"pinned": false,
"date": "2026-02-05T07:04:07Z"
"date": "2026-02-10T20:27:38Z"
},
{
"slug": "commafeed",
@@ -263,9 +270,9 @@
{
"slug": "dispatcharr",
"repo": "Dispatcharr/Dispatcharr",
"version": "v0.18.1",
"version": "v0.19.0",
"pinned": false,
"date": "2026-01-27T17:09:11Z"
"date": "2026-02-10T21:18:10Z"
},
{
"slug": "docmost",
@@ -533,6 +540,13 @@
"pinned": false,
"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",
"repo": "inspircd/inspircd",
@@ -561,6 +575,13 @@
"pinned": false,
"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",
"repo": "laurent22/joplin",
@@ -683,9 +704,9 @@
{
"slug": "libretranslate",
"repo": "LibreTranslate/LibreTranslate",
"version": "v1.8.4",
"version": "v1.9.0",
"pinned": false,
"date": "2026-02-02T17:45:16Z"
"date": "2026-02-10T19:05:48Z"
},
{
"slug": "lidarr",
@@ -718,9 +739,9 @@
{
"slug": "lubelogger",
"repo": "hargata/lubelog",
"version": "v1.5.9",
"version": "v1.6.0",
"pinned": false,
"date": "2026-02-09T17:36:13Z"
"date": "2026-02-10T20:16:32Z"
},
{
"slug": "mafl",
@@ -837,9 +858,9 @@
{
"slug": "navidrome",
"repo": "navidrome/navidrome",
"version": "v0.60.2",
"version": "v0.60.3",
"pinned": false,
"date": "2026-02-07T19:42:33Z"
"date": "2026-02-10T23:55:04Z"
},
{
"slug": "netbox",
@@ -848,6 +869,13 @@
"pinned": false,
"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",
"repo": "0xJacky/nginx-ui",
@@ -1037,6 +1065,13 @@
"pinned": false,
"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",
"repo": "plankanban/planka",
@@ -1100,6 +1135,13 @@
"pinned": false,
"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",
"repo": "Prowlarr/Prowlarr",
@@ -1124,9 +1166,9 @@
{
"slug": "pulse",
"repo": "rcourtman/Pulse",
"version": "v5.1.7",
"version": "v5.1.8",
"pinned": false,
"date": "2026-02-10T09:59:55Z"
"date": "2026-02-10T22:37:58Z"
},
{
"slug": "pve-scripts-local",
@@ -1142,6 +1184,13 @@
"pinned": false,
"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",
"repo": "qdrant/qdrant",
@@ -1229,16 +1278,16 @@
{
"slug": "scanopy",
"repo": "scanopy/scanopy",
"version": "v0.14.3",
"version": "v0.14.4",
"pinned": false,
"date": "2026-02-04T01:41:01Z"
"date": "2026-02-10T03:57:28Z"
},
{
"slug": "scraparr",
"repo": "thecfu/scraparr",
"version": "v2.2.5",
"version": "v3.0.0",
"pinned": false,
"date": "2025-10-07T12:34:31Z"
"date": "2026-02-10T22:30:44Z"
},
{
"slug": "seelf",
@@ -1275,6 +1324,13 @@
"pinned": false,
"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",
"repo": "grokability/snipe-it",
@@ -1285,9 +1341,9 @@
{
"slug": "snowshare",
"repo": "TuroYT/snowshare",
"version": "v1.3.3",
"version": "v1.3.4",
"pinned": false,
"date": "2026-02-09T10:52:12Z"
"date": "2026-02-10T14:17:26Z"
},
{
"slug": "sonarr",
@@ -1411,9 +1467,9 @@
{
"slug": "tracearr",
"repo": "connorgallopo/Tracearr",
"version": "v1.4.12",
"version": "v1.4.16",
"pinned": false,
"date": "2026-01-28T23:29:37Z"
"date": "2026-02-10T20:55:35Z"
},
{
"slug": "tracktor",
@@ -1439,9 +1495,9 @@
{
"slug": "trip",
"repo": "itskovacs/TRIP",
"version": "1.39.0",
"version": "1.40.0",
"pinned": false,
"date": "2026-02-07T16:59:51Z"
"date": "2026-02-10T20:12:53Z"
},
{
"slug": "tududi",
@@ -1502,9 +1558,9 @@
{
"slug": "vaultwarden",
"repo": "dani-garcia/vaultwarden",
"version": "1.35.2",
"version": "1.35.3",
"pinned": false,
"date": "2026-01-09T18:37:04Z"
"date": "2026-02-10T20:37:03Z"
},
{
"slug": "victoriametrics",
@@ -1530,9 +1586,9 @@
{
"slug": "wallos",
"repo": "ellite/Wallos",
"version": "v4.6.0",
"version": "v4.6.1",
"pinned": false,
"date": "2025-12-20T15:57:51Z"
"date": "2026-02-10T21:06:46Z"
},
{
"slug": "wanderer",

View File

@@ -1,5 +1,5 @@
{
"name": "slskd",
"name": "Slskd",
"slug": "slskd",
"categories": [
11
@@ -35,10 +35,6 @@
{
"text": "See /opt/slskd/config/slskd.yml to add your Soulseek credentials",
"type": "info"
},
{
"text": "This LXC includes Soularr; it needs to be configured (/opt/soularr/config.ini) before it will work",
"type": "info"
}
]
}

View File

@@ -10,7 +10,7 @@
"privileged": false,
"interface_port": 3000,
"documentation": "https://github.com/TuroYT/snowshare",
"config_path": "/opt/snowshare/.env",
"config_path": "/opt/snowshare.env",
"website": "https://github.com/TuroYT/snowshare",
"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.",

View File

@@ -31,8 +31,10 @@ setup_deb822_repo "matrix-org" \
"main"
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 "exit 101" >/usr/sbin/policy-rc.d
chmod +x /usr/sbin/policy-rc.d
$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/'\''::1'\'', //g' /etc/matrix-synapse/homeserver.yaml
SECRET=$(openssl rand -hex 32)

View File

@@ -289,7 +289,7 @@ ML_DIR="${APP_DIR}/machine-learning"
GEO_DIR="${INSTALL_DIR}/geodata"
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)"
NODE_VERSION="24" NODE_MODULE="pnpm@${PNPM_VERSION}" setup_nodejs

View File

@@ -45,7 +45,8 @@ fi
cd /opt/libretranslate
$STD uv venv --clear .venv --python 3.12
$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 .venv/bin/python scripts/compile_locales.py
$STD uv pip install "torch==${TORCH_VERSION}" --extra-index-url https://download.pytorch.org/whl/cpu

View File

@@ -3,7 +3,7 @@
# Copyright (c) 2021-2026 community-scripts ORG
# Author: vhsdream
# 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"
color
@@ -13,71 +13,71 @@ setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt install -y \
python3-pip
msg_ok "Installed Dependencies"
fetch_and_deploy_gh_release "Slskd" "slskd/slskd" "prebuild" "latest" "/opt/slskd" "slskd-*-linux-x64.zip"
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
msg_info "Configuring Slskd"
JWT_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 \
-e "\|web:|,\|cidr|s|^#||" \
-e "\|https:|,\|5031|s|false|true|" \
-e '/web:/,/cidr/s/^# //' \
-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|; \
s|role: readonly|role: readwrite|; \
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 "s|^ picture|# picture|" \
/opt/${APPLICATION}/config/slskd.yml
msg_ok "Setup ${APPLICATION}"
-e '/soulseek/,/write_queue/s/^# //' \
-e 's/^.*picture/#&/' /opt/slskd/config/slskd.yml
msg_ok "Configured Slskd"
msg_info "Installing Soularr"
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
cd /tmp
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
sed -i \
-e "\|[Slskd]|,\|host_url|s|yourslskdapikeygoeshere|$SLSKD_API_KEY|" \
-e "/host_url/s/slskd/localhost/" \
/opt/soularr/config.ini
sed -i \
-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"
read -rp "${TAB3}Do you want to install Soularr? y/N " soularr
if [[ ${soularr,,} =~ ^(y|yes)$ ]]; then
PYTHON_VERSION="3.11" setup_uv
fetch_and_deploy_gh_release "Soularr" "mrusse/soularr" "tarball" "latest" "/opt/soularr"
cd /opt/soularr
$STD uv venv venv
$STD source venv/bin/activate
$STD uv pip install -r requirements.txt
sed -i \
-e "\|[Slskd]|,\|host_url|s|yourslskdapikeygoeshere|$SLSKD_API_KEY|" \
-e "/host_url/s/slskd/localhost/" \
/opt/soularr/config.ini
cat <<EOF >/opt/soularr/run.sh
#!/usr/bin/env bash
msg_info "Creating Services"
cat <<EOF >/etc/systemd/system/${APPLICATION}.service
if ps aux | grep "[s]oularr.py" >/dev/null; then
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]
Description=${APPLICATION} Service
Description=Slskd Service
After=network.target
Wants=network.target
[Service]
WorkingDirectory=/opt/${APPLICATION}
ExecStart=/opt/${APPLICATION}/slskd --config /opt/${APPLICATION}/config/slskd.yml
WorkingDirectory=/opt/slskd
ExecStart=/opt/slskd/slskd --config /opt/slskd/config/slskd.yml
Restart=always
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF >/etc/systemd/system/soularr.timer
if [[ -d /opt/soularr ]]; then
cat <<EOF >/etc/systemd/system/soularr.timer
[Unit]
Description=Soularr service timer
RefuseManualStart=no
@@ -85,15 +85,15 @@ RefuseManualStop=no
[Timer]
Persistent=true
# run every 5 minutes
OnCalendar=*-*-* *:0/5:00
# run every 10 minutes
OnCalendar=*-*-* *:0/10:00
Unit=soularr.service
[Install]
WantedBy=timers.target
EOF
cat <<EOF >/etc/systemd/system/soularr.service
cat <<EOF >/etc/systemd/system/soularr.service
[Unit]
Description=Soularr service
After=network.target slskd.service
@@ -106,10 +106,9 @@ ExecStart=/bin/bash -c /opt/soularr/run.sh
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now ${APPLICATION}
systemctl enable -q soularr.timer
rm -rf $tmp_file
rm -rf /tmp/main.zip
msg_warn "Add your Lidarr API key to Soularr in '/opt/soularr/config.ini', then run 'systemctl enable --now soularr.timer'"
fi
systemctl enable -q --now slskd
msg_ok "Created Services"
motd_ssh

View File

@@ -131,7 +131,7 @@ function detect_service() {
function backup_container() {
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=$?
if [ $status -eq 0 ]; then
@@ -151,11 +151,11 @@ function get_backup_storages() {
split($0, a, ":")
type = a[1]
name = a[2]
sub(/^ +/, "", name)
gsub(/^[ \t]+|[ \t]+$/, "", name)
has_content = 0
has_backup = 0
}
/^ +content/ {
/^[ \t]*content/ {
has_content = 1
if ($0 ~ /backup/) has_backup = 1
}