mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-02-24 05:55:55 +01:00
Compare commits
2 Commits
2026-02-23
...
michelroeg
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
50a8134492 | ||
|
|
fea6521dd2 |
15
CHANGELOG.md
15
CHANGELOG.md
@@ -407,32 +407,19 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
</details>
|
||||
|
||||
## 2026-02-24
|
||||
|
||||
## 2026-02-23
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- SeaweedFS ([#12220](https://github.com/community-scripts/ProxmoxVE/pull/12220))
|
||||
- Sonobarr ([#12221](https://github.com/community-scripts/ProxmoxVE/pull/12221))
|
||||
- SparkyFitness ([#12185](https://github.com/community-scripts/ProxmoxVE/pull/12185))
|
||||
- SparkyFitness ([#12185](https://github.com/community-scripts/ProxmoxVE/pull/12185))
|
||||
- Frigate v16.4 [@MickLesk](https://github.com/MickLesk) ([#11887](https://github.com/community-scripts/ProxmoxVE/pull/11887))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- memos: unpin version due new release artifacts [@MickLesk](https://github.com/MickLesk) ([#12224](https://github.com/community-scripts/ProxmoxVE/pull/12224))
|
||||
- core: Enhance signal handling, reported "status" and logs [@MickLesk](https://github.com/MickLesk) ([#12216](https://github.com/community-scripts/ProxmoxVE/pull/12216))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- booklore v2: embed frontend, bump Java to 25, remove nginx [@MickLesk](https://github.com/MickLesk) ([#12223](https://github.com/community-scripts/ProxmoxVE/pull/12223))
|
||||
|
||||
### 🗑️ Deleted Scripts
|
||||
|
||||
- Remove: Huntarr (deprecated & Security) [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#12226](https://github.com/community-scripts/ProxmoxVE/pull/12226))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
@@ -30,7 +30,7 @@ function update_script() {
|
||||
fi
|
||||
|
||||
if check_for_gh_release "booklore" "booklore-app/BookLore"; then
|
||||
JAVA_VERSION="25" setup_java
|
||||
JAVA_VERSION="21" setup_java
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
setup_mariadb
|
||||
setup_yq
|
||||
@@ -60,16 +60,11 @@ function update_script() {
|
||||
$STD npm run build --configuration=production
|
||||
msg_ok "Built Frontend"
|
||||
|
||||
msg_info "Embedding Frontend into Backend"
|
||||
mkdir -p /opt/booklore/booklore-api/src/main/resources/static
|
||||
cp -r /opt/booklore/booklore-ui/dist/booklore/browser/* /opt/booklore/booklore-api/src/main/resources/static/
|
||||
msg_ok "Embedded Frontend into Backend"
|
||||
|
||||
msg_info "Building Backend"
|
||||
cd /opt/booklore/booklore-api
|
||||
APP_VERSION=$(get_latest_github_release "booklore-app/BookLore")
|
||||
yq eval ".app.version = \"${APP_VERSION}\"" -i src/main/resources/application.yaml
|
||||
$STD ./gradlew clean build -x test --no-daemon
|
||||
$STD ./gradlew clean build --no-daemon
|
||||
mkdir -p /opt/booklore/dist
|
||||
JAR_PATH=$(find /opt/booklore/booklore-api/build/libs -maxdepth 1 -type f -name "booklore-api-*.jar" ! -name "*plain*" | head -n1)
|
||||
if [[ -z "$JAR_PATH" ]]; then
|
||||
@@ -79,22 +74,9 @@ function update_script() {
|
||||
cp "$JAR_PATH" /opt/booklore/dist/app.jar
|
||||
msg_ok "Built Backend"
|
||||
|
||||
if systemctl is-active --quiet nginx 2>/dev/null; then
|
||||
msg_info "Removing Nginx (no longer needed)"
|
||||
systemctl disable --now nginx
|
||||
$STD apt-get purge -y nginx nginx-common
|
||||
msg_ok "Removed Nginx"
|
||||
fi
|
||||
|
||||
if ! grep -q "^SERVER_PORT=" /opt/booklore_storage/.env 2>/dev/null; then
|
||||
echo "SERVER_PORT=6060" >>/opt/booklore_storage/.env
|
||||
fi
|
||||
|
||||
sed -i 's|ExecStart=/usr/bin/java -jar|ExecStart=/usr/bin/java -XX:+UseG1GC -XX:+UseStringDeduplication -XX:+UseCompactObjectHeaders -jar|' /etc/systemd/system/booklore.service
|
||||
systemctl daemon-reload
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start booklore
|
||||
systemctl reload nginx
|
||||
rm -rf /opt/booklore_bak
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
|
||||
6
ct/headers/huntarr
Normal file
6
ct/headers/huntarr
Normal file
@@ -0,0 +1,6 @@
|
||||
__ __
|
||||
/ /_ __ ______ / /_____ ___________
|
||||
/ __ \/ / / / __ \/ __/ __ `/ ___/ ___/
|
||||
/ / / / /_/ / / / / /_/ /_/ / / / /
|
||||
/_/ /_/\__,_/_/ /_/\__/\__,_/_/ /_/
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
_____ _____________
|
||||
/ ___/___ ____ __ _____ ___ ____/ / ____/ ___/
|
||||
\__ \/ _ \/ __ `/ | /| / / _ \/ _ \/ __ / /_ \__ \
|
||||
___/ / __/ /_/ /| |/ |/ / __/ __/ /_/ / __/ ___/ /
|
||||
/____/\___/\__,_/ |__/|__/\___/\___/\__,_/_/ /____/
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
__
|
||||
_________ ____ ____ / /_ ____ ___________
|
||||
/ ___/ __ \/ __ \/ __ \/ __ \/ __ `/ ___/ ___/
|
||||
(__ ) /_/ / / / / /_/ / /_/ / /_/ / / / /
|
||||
/____/\____/_/ /_/\____/_.___/\__,_/_/ /_/
|
||||
|
||||
@@ -27,12 +27,12 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
if check_for_gh_release "memos" "usememos/memos"; then
|
||||
if check_for_gh_release "memos" "usememos/memos" "v0.25.3"; then
|
||||
msg_info "Stopping service"
|
||||
systemctl stop memos
|
||||
msg_ok "Service stopped"
|
||||
|
||||
fetch_and_deploy_gh_release "memos" "usememos/memos" "prebuild" "latest" "/opt/memos" "memos*linux_amd64.tar.gz"
|
||||
fetch_and_deploy_gh_release "memos" "usememos/memos" "prebuild" "v0.25.3" "/opt/memos" "memos*linux_amd64.tar.gz"
|
||||
|
||||
msg_info "Starting service"
|
||||
systemctl start memos
|
||||
|
||||
@@ -1,55 +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: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/seaweedfs/seaweedfs
|
||||
|
||||
APP="SeaweedFS"
|
||||
var_tags="${var_tags:-storage;s3;filesystem}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-16}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
var_fuse="${var_fuse:-yes}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -f /opt/seaweedfs/weed ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "seaweedfs" "seaweedfs/seaweedfs"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop seaweedfs
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
fetch_and_deploy_gh_release "seaweedfs" "seaweedfs/seaweedfs" "prebuild" "latest" "/opt/seaweedfs" "linux_amd64.tar.gz"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start seaweedfs
|
||||
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}:9333${CL}"
|
||||
@@ -1,63 +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: GoldenSpringness
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/Dodelidoo-Labs/sonobarr
|
||||
|
||||
APP="sonobarr"
|
||||
var_tags="${var_tags:-music;discovery}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_disk="${var_disk:-20}"
|
||||
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 [[ ! -d "/opt/sonobarr" ]]; then
|
||||
msg_error "No sonobarr Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
if check_for_gh_release "sonobarr" "Dodelidoo-Labs/sonobarr"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop sonobarr
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "sonobarr" "Dodelidoo-Labs/sonobarr" "tarball"
|
||||
|
||||
msg_info "Updating sonobarr"
|
||||
$STD uv venv -c /opt/sonobarr/venv
|
||||
$STD source /opt/sonobarr/venv/bin/activate
|
||||
$STD uv pip install --no-cache-dir -r /opt/sonobarr/requirements.txt
|
||||
sed -i "/release_version/s/=.*/=$(cat ~/.sonobarr)/" /etc/sonobarr/.env
|
||||
msg_ok "Updated sonobarr"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start sonobarr
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}sonobarr setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5000${CL}"
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"generated": "2026-02-24T00:22:35Z",
|
||||
"generated": "2026-02-23T12:14:19Z",
|
||||
"versions": [
|
||||
{
|
||||
"slug": "2fauth",
|
||||
@@ -25,9 +25,9 @@
|
||||
{
|
||||
"slug": "adventurelog",
|
||||
"repo": "seanmorley15/adventurelog",
|
||||
"version": "v0.12.0",
|
||||
"version": "v0.11.0",
|
||||
"pinned": false,
|
||||
"date": "2026-02-23T14:06:45Z"
|
||||
"date": "2025-09-01T16:19:38Z"
|
||||
},
|
||||
{
|
||||
"slug": "alpine-redlib",
|
||||
@@ -151,9 +151,9 @@
|
||||
{
|
||||
"slug": "booklore",
|
||||
"repo": "booklore-app/BookLore",
|
||||
"version": "v2.0.0",
|
||||
"version": "v1.18.5",
|
||||
"pinned": false,
|
||||
"date": "2026-02-23T17:00:00Z"
|
||||
"date": "2026-01-24T17:15:32Z"
|
||||
},
|
||||
{
|
||||
"slug": "bookstack",
|
||||
@@ -200,9 +200,9 @@
|
||||
{
|
||||
"slug": "cleanuparr",
|
||||
"repo": "Cleanuparr/Cleanuparr",
|
||||
"version": "v2.7.4",
|
||||
"version": "v2.7.1",
|
||||
"pinned": false,
|
||||
"date": "2026-02-23T18:41:16Z"
|
||||
"date": "2026-02-23T09:58:13Z"
|
||||
},
|
||||
{
|
||||
"slug": "cloudreve",
|
||||
@@ -228,9 +228,9 @@
|
||||
{
|
||||
"slug": "configarr",
|
||||
"repo": "raydak-labs/configarr",
|
||||
"version": "v1.23.0",
|
||||
"version": "v1.22.0",
|
||||
"pinned": false,
|
||||
"date": "2026-02-23T12:28:13Z"
|
||||
"date": "2026-02-20T21:55:46Z"
|
||||
},
|
||||
{
|
||||
"slug": "convertx",
|
||||
@@ -249,9 +249,9 @@
|
||||
{
|
||||
"slug": "cronicle",
|
||||
"repo": "jhuckaby/Cronicle",
|
||||
"version": "v0.9.107",
|
||||
"version": "v0.9.106",
|
||||
"pinned": false,
|
||||
"date": "2026-02-23T17:48:27Z"
|
||||
"date": "2026-02-11T17:11:46Z"
|
||||
},
|
||||
{
|
||||
"slug": "cronmaster",
|
||||
@@ -382,9 +382,9 @@
|
||||
{
|
||||
"slug": "firefly",
|
||||
"repo": "firefly-iii/firefly-iii",
|
||||
"version": "v6.5.0",
|
||||
"version": "v6.4.23",
|
||||
"pinned": false,
|
||||
"date": "2026-02-23T19:19:00Z"
|
||||
"date": "2026-02-20T07:02:05Z"
|
||||
},
|
||||
{
|
||||
"slug": "fladder",
|
||||
@@ -438,9 +438,9 @@
|
||||
{
|
||||
"slug": "ghostfolio",
|
||||
"repo": "ghostfolio/ghostfolio",
|
||||
"version": "2.243.0",
|
||||
"version": "2.242.0",
|
||||
"pinned": false,
|
||||
"date": "2026-02-23T19:31:36Z"
|
||||
"date": "2026-02-22T10:01:44Z"
|
||||
},
|
||||
{
|
||||
"slug": "gitea",
|
||||
@@ -582,6 +582,13 @@
|
||||
"pinned": false,
|
||||
"date": "2025-12-23T14:53:51Z"
|
||||
},
|
||||
{
|
||||
"slug": "huntarr",
|
||||
"repo": "plexguide/Huntarr.io",
|
||||
"version": "9.4.1",
|
||||
"pinned": false,
|
||||
"date": "2026-02-23T08:46:37Z"
|
||||
},
|
||||
{
|
||||
"slug": "immich-public-proxy",
|
||||
"repo": "alangrainger/immich-public-proxy",
|
||||
@@ -858,9 +865,9 @@
|
||||
{
|
||||
"slug": "memos",
|
||||
"repo": "usememos/memos",
|
||||
"version": "v0.26.2",
|
||||
"pinned": false,
|
||||
"date": "2026-02-23T13:28:34Z"
|
||||
"version": "v0.25.3",
|
||||
"pinned": true,
|
||||
"date": "2025-11-25T15:40:41Z"
|
||||
},
|
||||
{
|
||||
"slug": "metube",
|
||||
@@ -1117,9 +1124,9 @@
|
||||
{
|
||||
"slug": "planka",
|
||||
"repo": "plankanban/planka",
|
||||
"version": "v2.0.2",
|
||||
"version": "v2.0.1",
|
||||
"pinned": false,
|
||||
"date": "2026-02-23T17:47:15Z"
|
||||
"date": "2026-02-17T15:26:55Z"
|
||||
},
|
||||
{
|
||||
"slug": "plant-it",
|
||||
@@ -1138,9 +1145,9 @@
|
||||
{
|
||||
"slug": "pocketid",
|
||||
"repo": "pocket-id/pocket-id",
|
||||
"version": "v2.3.0",
|
||||
"version": "v2.2.0",
|
||||
"pinned": false,
|
||||
"date": "2026-02-23T19:50:48Z"
|
||||
"date": "2026-01-11T15:01:07Z"
|
||||
},
|
||||
{
|
||||
"slug": "privatebin",
|
||||
@@ -1243,9 +1250,9 @@
|
||||
{
|
||||
"slug": "qui",
|
||||
"repo": "autobrr/qui",
|
||||
"version": "v1.14.1",
|
||||
"version": "v1.14.0",
|
||||
"pinned": false,
|
||||
"date": "2026-02-23T13:13:31Z"
|
||||
"date": "2026-02-21T22:23:46Z"
|
||||
},
|
||||
{
|
||||
"slug": "radarr",
|
||||
@@ -1345,13 +1352,6 @@
|
||||
"pinned": false,
|
||||
"date": "2026-02-12T14:20:56Z"
|
||||
},
|
||||
{
|
||||
"slug": "seaweedfs",
|
||||
"repo": "seaweedfs/seaweedfs",
|
||||
"version": "4.13",
|
||||
"pinned": false,
|
||||
"date": "2026-02-17T01:09:45Z"
|
||||
},
|
||||
{
|
||||
"slug": "seelf",
|
||||
"repo": "YuukanOO/seelf",
|
||||
@@ -1404,16 +1404,16 @@
|
||||
{
|
||||
"slug": "snipeit",
|
||||
"repo": "grokability/snipe-it",
|
||||
"version": "v8.4.0",
|
||||
"version": "v8.3.7",
|
||||
"pinned": false,
|
||||
"date": "2026-02-23T20:59:43Z"
|
||||
"date": "2025-12-12T09:13:40Z"
|
||||
},
|
||||
{
|
||||
"slug": "snowshare",
|
||||
"repo": "TuroYT/snowshare",
|
||||
"version": "v1.3.7",
|
||||
"version": "v1.3.6",
|
||||
"pinned": false,
|
||||
"date": "2026-02-23T15:51:39Z"
|
||||
"date": "2026-02-19T11:06:29Z"
|
||||
},
|
||||
{
|
||||
"slug": "sonarr",
|
||||
@@ -1422,13 +1422,6 @@
|
||||
"pinned": false,
|
||||
"date": "2025-11-05T01:56:48Z"
|
||||
},
|
||||
{
|
||||
"slug": "sonobarr",
|
||||
"repo": "Dodelidoo-Labs/sonobarr",
|
||||
"version": "0.11.0",
|
||||
"pinned": false,
|
||||
"date": "2026-01-21T19:07:21Z"
|
||||
},
|
||||
{
|
||||
"slug": "speedtest-tracker",
|
||||
"repo": "alexjustesen/speedtest-tracker",
|
||||
@@ -1565,9 +1558,9 @@
|
||||
{
|
||||
"slug": "traefik",
|
||||
"repo": "traefik/traefik",
|
||||
"version": "v3.6.9",
|
||||
"version": "v3.6.8",
|
||||
"pinned": false,
|
||||
"date": "2026-02-23T17:21:17Z"
|
||||
"date": "2026-02-11T16:44:37Z"
|
||||
},
|
||||
{
|
||||
"slug": "trilium",
|
||||
@@ -1579,9 +1572,9 @@
|
||||
{
|
||||
"slug": "trip",
|
||||
"repo": "itskovacs/TRIP",
|
||||
"version": "1.41.0",
|
||||
"version": "1.40.0",
|
||||
"pinned": false,
|
||||
"date": "2026-02-23T17:57:31Z"
|
||||
"date": "2026-02-10T20:12:53Z"
|
||||
},
|
||||
{
|
||||
"slug": "tududi",
|
||||
@@ -1593,9 +1586,9 @@
|
||||
{
|
||||
"slug": "tunarr",
|
||||
"repo": "chrisbenincasa/tunarr",
|
||||
"version": "v1.1.16",
|
||||
"version": "v1.1.15",
|
||||
"pinned": false,
|
||||
"date": "2026-02-23T21:24:47Z"
|
||||
"date": "2026-02-19T23:51:17Z"
|
||||
},
|
||||
{
|
||||
"slug": "uhf",
|
||||
@@ -1642,9 +1635,9 @@
|
||||
{
|
||||
"slug": "vaultwarden",
|
||||
"repo": "dani-garcia/vaultwarden",
|
||||
"version": "1.35.4",
|
||||
"version": "1.35.3",
|
||||
"pinned": false,
|
||||
"date": "2026-02-23T21:43:25Z"
|
||||
"date": "2026-02-10T20:37:03Z"
|
||||
},
|
||||
{
|
||||
"slug": "victoriametrics",
|
||||
@@ -1747,9 +1740,9 @@
|
||||
{
|
||||
"slug": "wizarr",
|
||||
"repo": "wizarrrr/wizarr",
|
||||
"version": "v2026.2.0",
|
||||
"version": "v2025.12.0",
|
||||
"pinned": false,
|
||||
"date": "2026-02-23T19:25:28Z"
|
||||
"date": "2025-12-09T14:30:23Z"
|
||||
},
|
||||
{
|
||||
"slug": "writefreely",
|
||||
|
||||
36
frontend/public/json/huntarr.json
Normal file
36
frontend/public/json/huntarr.json
Normal file
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"name": "Huntarr",
|
||||
"slug": "huntarr",
|
||||
"categories": [
|
||||
14
|
||||
],
|
||||
"date_created": "2025-06-18",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 9705,
|
||||
"documentation": "https://github.com/plexguide/Huntarr.io/wiki",
|
||||
"config_path": "/opt/huntarr",
|
||||
"website": "https://github.com/plexguide/Huntarr.io",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/huntarr.webp",
|
||||
"description": "Huntarr is a tool that automates the search for missing or low-quality media content in your collection. It works seamlessly with applications like Sonarr, Radarr, Lidarr, Readarr, and Whisparr, enhancing their functionality with continuous background scans to identify and update missed or outdated content. Through a user-friendly web interface accessible on port 9705, Huntarr provides real-time statistics, log views, and extensive configuration options. The software is especially useful for users who want to keep their media library up to date by automatically searching for missing episodes or higher-quality versions. Huntarr is well-suited for self-hosted environments and can easily run in LXC containers or Docker setups.",
|
||||
"disable": false,
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/huntarr.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": []
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
{
|
||||
"name": "SeaweedFS",
|
||||
"slug": "seaweedfs",
|
||||
"categories": [
|
||||
11
|
||||
],
|
||||
"date_created": "2026-02-23",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 9333,
|
||||
"documentation": "https://github.com/seaweedfs/seaweedfs/wiki",
|
||||
"website": "https://seaweedfs.com/",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/seaweedfs.webp",
|
||||
"config_path": "",
|
||||
"description": "SeaweedFS is a fast distributed storage system for blobs, objects, files, and data lakes, with O(1) disk seek, S3 API, FUSE mount, WebDAV, and cloud tiering support.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/seaweedfs.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 2048,
|
||||
"hdd": 16,
|
||||
"os": "Debian",
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "Master UI available at port 9333, Filer UI at port 8888, S3 API at port 8333.",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "Data is stored in /opt/seaweedfs-data.",
|
||||
"type": "info"
|
||||
},
|
||||
{
|
||||
"text": "FUSE mounting requires fuse3 (pre-installed).",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
{
|
||||
"name": "Sonobarr",
|
||||
"slug": "sonobarr",
|
||||
"categories": [
|
||||
14
|
||||
],
|
||||
"date_created": "2026-02-23",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 5000,
|
||||
"documentation": "https://github.com/Dodelidoo-Labs/sonobarr",
|
||||
"config_path": "/etc/sonobarr/.env",
|
||||
"website": "https://github.com/Dodelidoo-Labs/sonobarr",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/sonobarr.webp",
|
||||
"description": "Sonobarr marries your existing Lidarr library with Last.fm’s discovery graph to surface artists you'll actually like. It runs as a Flask + Socket.IO application, ships with a polished Bootstrap UI, and includes admin tooling so folks can share a single instance safely.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/sonobarr.sh",
|
||||
"resources": {
|
||||
"cpu": 1,
|
||||
"ram": 1024,
|
||||
"hdd": 20,
|
||||
"os": "Debian",
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "Default generated admin password is in the env file (sonobarr_superadmin_password)",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -13,7 +13,11 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
JAVA_VERSION="25" setup_java
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y nginx
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
JAVA_VERSION="21" setup_java
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
setup_mariadb
|
||||
setup_yq
|
||||
@@ -26,11 +30,6 @@ $STD npm install --force
|
||||
$STD npm run build --configuration=production
|
||||
msg_ok "Built Frontend"
|
||||
|
||||
msg_info "Embedding Frontend into Backend"
|
||||
mkdir -p /opt/booklore/booklore-api/src/main/resources/static
|
||||
cp -r /opt/booklore/booklore-ui/dist/booklore/browser/* /opt/booklore/booklore-api/src/main/resources/static/
|
||||
msg_ok "Embedded Frontend into Backend"
|
||||
|
||||
msg_info "Creating Environment"
|
||||
mkdir -p /opt/booklore_storage/{data,books,bookdrop}
|
||||
cat <<EOF >/opt/booklore_storage/.env
|
||||
@@ -42,7 +41,6 @@ DATABASE_PASSWORD=${MARIADB_DB_PASS}
|
||||
# App Configuration (Spring Boot mapping from app.* properties)
|
||||
APP_PATH_CONFIG=/opt/booklore_storage/data
|
||||
APP_BOOKDROP_FOLDER=/opt/booklore_storage/bookdrop
|
||||
SERVER_PORT=6060
|
||||
EOF
|
||||
msg_ok "Created Environment"
|
||||
|
||||
@@ -50,7 +48,7 @@ msg_info "Building Backend"
|
||||
cd /opt/booklore/booklore-api
|
||||
APP_VERSION=$(get_latest_github_release "booklore-app/BookLore")
|
||||
yq eval ".app.version = \"${APP_VERSION}\"" -i src/main/resources/application.yaml
|
||||
$STD ./gradlew clean build -x test --no-daemon
|
||||
$STD ./gradlew clean build --no-daemon
|
||||
mkdir -p /opt/booklore/dist
|
||||
JAR_PATH=$(find /opt/booklore/booklore-api/build/libs -maxdepth 1 -type f -name "booklore-api-*.jar" ! -name "*plain*" | head -n1)
|
||||
if [[ -z "$JAR_PATH" ]]; then
|
||||
@@ -60,6 +58,16 @@ fi
|
||||
cp "$JAR_PATH" /opt/booklore/dist/app.jar
|
||||
msg_ok "Built Backend"
|
||||
|
||||
msg_info "Configuring Nginx"
|
||||
rm -rf /usr/share/nginx/html
|
||||
ln -s /opt/booklore/booklore-ui/dist/booklore/browser /usr/share/nginx/html
|
||||
rm -f /etc/nginx/sites-enabled/default
|
||||
cp /opt/booklore/nginx.conf /etc/nginx/nginx.conf
|
||||
sed -i 's/listen \${BOOKLORE_PORT};/listen 6060;/' /etc/nginx/nginx.conf
|
||||
sed -i 's/listen \[::\]:${BOOKLORE_PORT};/listen [::]:6060;/' /etc/nginx/nginx.conf
|
||||
systemctl restart nginx
|
||||
msg_ok "Configured Nginx"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/booklore.service
|
||||
[Unit]
|
||||
@@ -70,7 +78,7 @@ After=network.target mariadb.service
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=/opt/booklore/dist
|
||||
ExecStart=/usr/bin/java -XX:+UseG1GC -XX:+UseStringDeduplication -XX:+UseCompactObjectHeaders -jar /opt/booklore/dist/app.jar
|
||||
ExecStart=/usr/bin/java -jar /opt/booklore/dist/app.jar
|
||||
EnvironmentFile=/opt/booklore_storage/.env
|
||||
SuccessExitStatus=143
|
||||
TimeoutStopSec=10
|
||||
|
||||
@@ -14,7 +14,7 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
fetch_and_deploy_gh_release "memos" "usememos/memos" "prebuild" "latest" "/opt/memos" "memos*linux_amd64.tar.gz"
|
||||
fetch_and_deploy_gh_release "memos" "usememos/memos" "prebuild" "v0.25.3" "/opt/memos" "memos*linux_amd64.tar.gz"
|
||||
mkdir -p /opt/memos_data
|
||||
|
||||
msg_info "Creating Service"
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/seaweedfs/seaweedfs
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y fuse3
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
fetch_and_deploy_gh_release "seaweedfs" "seaweedfs/seaweedfs" "prebuild" "latest" "/opt/seaweedfs" "linux_amd64.tar.gz"
|
||||
|
||||
msg_info "Setting up SeaweedFS"
|
||||
mkdir -p /opt/seaweedfs-data
|
||||
ln -sf /opt/seaweedfs/weed /usr/local/bin/weed
|
||||
msg_ok "Set up SeaweedFS"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/seaweedfs.service
|
||||
[Unit]
|
||||
Description=SeaweedFS Server
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=/opt/seaweedfs
|
||||
ExecStart=/opt/seaweedfs/weed server -dir=/opt/seaweedfs-data -master.port=9333 -volume.port=8080 -filer -s3
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
LimitNOFILE=65536
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now seaweedfs
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -1,52 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: GoldenSpringness
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/Dodelidoo-Labs/sonobarr
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
fetch_and_deploy_gh_release "sonobarr" "Dodelidoo-Labs/sonobarr" "tarball"
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
|
||||
msg_info "Setting up sonobarr"
|
||||
$STD uv venv -c /opt/sonobarr/venv
|
||||
source /opt/sonobarr/venv/bin/activate
|
||||
$STD uv pip install --no-cache-dir -r /opt/sonobarr/requirements.txt
|
||||
mkdir -p /etc/sonobarr
|
||||
mv /opt/sonobarr/.sample-env /etc/sonobarr/.env
|
||||
sed -i "s/^secret_key=.*/secret_key=$(openssl rand -hex 16)/" /etc/sonobarr/.env
|
||||
sed -i "s/^sonobarr_superadmin_password=.*/sonobarr_superadmin_password=$(openssl rand -hex 16)/" /etc/sonobarr/.env
|
||||
echo "release_version=$(cat ~/.sonobarr)" >>/etc/sonobarr/.env
|
||||
echo "sonobarr_config_dir=/etc/sonobarr" >>/etc/sonobarr.env
|
||||
msg_ok "Set up sonobarr"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/sonobarr.service
|
||||
[Unit]
|
||||
Description=sonobarr Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
WorkingDirectory=/opt/sonobarr/src
|
||||
EnvironmentFile=/etc/sonobarr/.env
|
||||
Environment="PATH=/opt/sonobarr/venv/bin"
|
||||
ExecStart=/bin/bash -c 'gunicorn Sonobarr:app -c ../gunicorn_config.py'
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now sonobarr
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
Reference in New Issue
Block a user