Compare commits

..

18 Commits

Author SHA1 Message Date
community-scripts-pr-app[bot]
f19659bea0 Update CHANGELOG.md (#7274)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-29 00:13:05 +00:00
community-scripts-pr-app[bot]
9cfb549dca Update versions.json (#7273)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-29 02:12:39 +02:00
community-scripts-pr-app[bot]
ba09cbd9cc Update CHANGELOG.md (#7270)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-28 21:28:55 +00:00
community-scripts-pr-app[bot]
bc4d09b073 Update CHANGELOG.md (#7269)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-28 21:27:41 +00:00
Chris
fb2d91abe7 MMDL: add build-essential as dep (#7266)
- fixes #7265?
2025-08-28 23:27:16 +02:00
Slaviša Arežina
5146385f4c Remove hoarder (#7260) 2025-08-28 21:21:21 +02:00
community-scripts-pr-app[bot]
346a8e140c Update CHANGELOG.md (#7259)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-28 13:44:07 +00:00
Slaviša Arežina
42aa8f8868 Update keycloak.json (#7256) 2025-08-28 15:43:42 +02:00
community-scripts-pr-app[bot]
459772162f Update CHANGELOG.md (#7257)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-28 12:44:25 +00:00
CanbiZ
1d65650d28 [core]: feature - check_for_gh_release as update-handler (#7254) 2025-08-28 14:43:56 +02:00
community-scripts-pr-app[bot]
a2099bc195 Update versions.json (#7255)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-28 14:05:06 +02:00
community-scripts-pr-app[bot]
896545ab1b Update CHANGELOG.md (#7251)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-28 09:23:55 +00:00
CanbiZ
522f427677 Flaresolverr: Pin to 3.3.25 (Python Issue) (#7248) 2025-08-28 11:23:35 +02:00
community-scripts-pr-app[bot]
5d70455d93 Update CHANGELOG.md (#7250)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-28 09:23:18 +00:00
community-scripts-pr-app[bot]
01a91d8b4f Update date in json (#7249)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-08-28 09:23:13 +00:00
push-app-to-main[bot]
f66a60ee47 MediaManager (#7238) 2025-08-28 11:22:51 +02:00
community-scripts-pr-app[bot]
b4e74b2a17 Update CHANGELOG.md (#7247)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-08-28 05:18:17 +00:00
moshekv
644e5900d9 add support for multiple ip addresses in monitor-all.sh (#7244) 2025-08-28 07:17:58 +02:00
15 changed files with 514 additions and 263 deletions

View File

@@ -10,8 +10,35 @@
> [!CAUTION]
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
## 2025-08-29
## 2025-08-28
### 🆕 New Scripts
- MediaManager ([#7238](https://github.com/community-scripts/ProxmoxVE/pull/7238))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- MMDL: add build-essential as dep [@vhsdream](https://github.com/vhsdream) ([#7266](https://github.com/community-scripts/ProxmoxVE/pull/7266))
- #### ✨ New Features
- add support for multiple ip addresses in monitor-all.sh [@moshekv](https://github.com/moshekv) ([#7244](https://github.com/community-scripts/ProxmoxVE/pull/7244))
- [core]: feature - check_for_gh_release as update-handler [@MickLesk](https://github.com/MickLesk) ([#7254](https://github.com/community-scripts/ProxmoxVE/pull/7254))
- #### 💥 Breaking Changes
- Flaresolverr: Pin to 3.3.25 (Python Issue) [@MickLesk](https://github.com/MickLesk) ([#7248](https://github.com/community-scripts/ProxmoxVE/pull/7248))
### 🌐 Website
- #### 📝 Script Information
- Keycloak: Update website [@tremor021](https://github.com/tremor021) ([#7256](https://github.com/community-scripts/ProxmoxVE/pull/7256))
## 2025-08-27
### 🚀 Updated Scripts

View File

@@ -35,7 +35,7 @@ function update_script() {
msg_ok "Stopped service"
rm -rf /opt/flaresolverr
fetch_and_deploy_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "prebuild" "latest" "/opt/flaresolverr" "flaresolverr_linux_x64.tar.gz"
fetch_and_deploy_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "prebuild" "v3.3.25" "/opt/flaresolverr" "flaresolverr_linux_x64.tar.gz"
msg_info "Starting service"
systemctl start flaresolverr

View File

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

6
ct/headers/mediamanager Normal file
View File

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

View File

@@ -1,85 +0,0 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 tteck
# Author: MickLesk (Canbiz) & vhsdream
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://hoarder.app/
APP="Hoarder"
var_tags="${var_tags:-bookmark}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-10}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/hoarder ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
RELEASE=$(curl -fsSL https://api.github.com/repos/hoarder-app/hoarder/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
PREV_RELEASE=$(cat /opt/${APP}_version.txt)
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "${PREV_RELEASE}" ]]; then
msg_info "Stopping Services"
systemctl stop hoarder-web hoarder-workers hoarder-browser
msg_ok "Stopped Services"
msg_info "Updating ${APP} to v${RELEASE}"
if [[ $(corepack -v) < "0.31.0" ]]; then
$STD npm install -g corepack@0.31.0
fi
if [[ "${PREV_RELEASE}" < 0.23.0 ]]; then
$STD apt-get install -y graphicsmagick ghostscript
fi
cd /opt
if [[ -f /opt/hoarder/.env ]] && [[ ! -f /etc/hoarder/hoarder.env ]]; then
mkdir -p /etc/hoarder
mv /opt/hoarder/.env /etc/hoarder/hoarder.env
fi
rm -rf /opt/hoarder
curl -fsSL "https://github.com/hoarder-app/hoarder/archive/refs/tags/v${RELEASE}.zip" -o "v${RELEASE}.zip"
$STD unzip v"${RELEASE}".zip
mv karakeep-"${RELEASE}" /opt/hoarder
cd /opt/hoarder/apps/web
$STD pnpm install --frozen-lockfile
$STD pnpm exec next build --experimental-build-mode compile
cp -r /opt/hoarder/apps/web/.next/standalone/apps/web/server.js /opt/hoarder/apps/web
cd /opt/hoarder/apps/workers
$STD pnpm install --frozen-lockfile
export DATA_DIR=/opt/hoarder_data
cd /opt/hoarder/packages/db
$STD pnpm migrate
sed -i "s/SERVER_VERSION=${PREV_RELEASE}/SERVER_VERSION=${RELEASE}/" /etc/hoarder/hoarder.env
msg_ok "Updated ${APP} to v${RELEASE}"
msg_info "Starting Services"
systemctl start hoarder-browser hoarder-workers hoarder-web
msg_ok "Started Services"
msg_info "Cleaning up"
rm -R /opt/v"${RELEASE}".zip
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Cleaned"
msg_ok "Updated Successfully"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}."
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}:3000${CL}"

79
ct/mediamanager.sh Normal file
View File

@@ -0,0 +1,79 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: vhsdream
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/maxdorninger/MediaManager
APP="MediaManager"
var_tags="${var_tags:-arr}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-3072}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/mediamanager ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
setup_uv
RELEASE=$(curl -fsSL https://api.github.com/repos/maxdorninger/MediaManager/releases/latest | jq '.tag_name' | sed 's/^v//')
if [[ "${RELEASE}" != "$(cat ~/.mediamanager 2>/dev/null)" ]] || [[ ! -f ~/.mediamanager ]]; then
msg_info "Stopping Service"
systemctl stop mediamanager
msg_ok "Stopped Service"
fetch_and_deploy_gh_release "MediaManager" "maxdorninger/MediaManager" "tarball" "latest" "/opt/mediamanager"
msg_info "Updating ${APP}"
MM_DIR="/opt/mm"
export CONFIG_DIR="${MM_DIR}/config"
export FRONTEND_FILES_DIR="${MM_DIR}/web/build"
export BASE_PATH=""
export PUBLIC_VERSION=""
export PUBLIC_API_URL="${BASE_PATH}/api/v1"
export BASE_PATH="${BASE_PATH}/web"
cd /opt/mediamanager/web
$STD npm ci
$STD npm run build
rm -rf "$FRONTEND_FILES_DIR"/build
cp -r build "$FRONTEND_FILES_DIR"
export BASE_PATH=""
export VIRTUAL_ENV="/opt/${MM_DIR}/venv"
cd /opt/mediamanager
rm -rf "$MM_DIR"/{media_manager,alembic*}
cp -r {media_manager,alembic*} "$MM_DIR"
$STD /usr/local/bin/uv sync --locked --active
msg_ok "Updated $APP"
msg_info "Starting Service"
systemctl start mediamanager
msg_ok "Started Service"
msg_ok "Updated Successfully"
else
msg_ok "Already up to date"
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}:8000${CL}"

View File

@@ -31,5 +31,10 @@
"username": null,
"password": null
},
"notes": []
"notes": [
{
"text": "Flaresolverr is pinned to Version 3.3.25 because they add an breaking python package which doesn't work with debian 12.`",
"type": "info"
}
]
}

View File

@@ -36,10 +36,6 @@
"text": "First start can take a few minutes",
"type": "warning"
},
{
"text": "This script requires some extra steps after the installation, Please checkout the `https://github.com/community-scripts/ProxmoxVE/discussions/193`",
"type": "info"
},
{
"text": "When updating, if you had modified cache-ispn.xml: Re-apply your changes to the new file, otherwise leave it unchanged.",
"type": "info"

View File

@@ -0,0 +1,45 @@
{
"name": "MediaManager",
"slug": "mediamanager",
"categories": [
14,
13
],
"date_created": "2025-08-28",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 8000,
"documentation": "https://maxdorninger.github.io/MediaManager/introduction.html",
"config_path": "/opt/mm_data/config.toml",
"website": "https://github.com/maxdorninger/MediaManager",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/mediamanager.webp",
"description": "A modern selfhosted media management system for your media library",
"install_methods": [
{
"type": "default",
"script": "ct/mediamanager.sh",
"resources": {
"cpu": 2,
"ram": 3072,
"hdd": 4,
"os": "Debian",
"version": "12"
}
}
],
"default_credentials": {
"username": "<email address>",
"password": "admin"
},
"notes": [
{
"text": "During the installation, provide the email address of the first admin user",
"type": "info"
},
{
"text": "You're probably going to want to use a bind mount for the media directories",
"type": "info"
}
]
}

View File

@@ -1,34 +1,174 @@
[
{
"name": "Dolibarr/dolibarr",
"version": "21.0.3",
"date": "2025-08-28T21:05:15Z"
},
{
"name": "Part-DB/Part-DB-server",
"version": "v1.17.4",
"date": "2025-08-28T21:00:53Z"
},
{
"name": "9001/copyparty",
"version": "v1.19.6",
"date": "2025-08-27T21:11:44Z"
"version": "v1.19.7",
"date": "2025-08-28T20:42:58Z"
},
{
"name": "linkwarden/linkwarden",
"version": "v2.12.2",
"date": "2025-08-28T20:34:30Z"
},
{
"name": "dgtlmoon/changedetection.io",
"version": "0.50.11",
"date": "2025-08-28T20:12:30Z"
},
{
"name": "Lidarr/Lidarr",
"version": "v2.13.3.4711",
"date": "2025-08-28T20:06:24Z"
},
{
"name": "ollama/ollama",
"version": "v0.11.8",
"date": "2025-08-27T18:43:44Z"
},
{
"name": "mongodb/mongo",
"version": "r7.0.24-rc0",
"date": "2025-08-28T19:08:13Z"
},
{
"name": "immich-app/immich",
"version": "v1.140.0",
"date": "2025-08-28T18:50:45Z"
},
{
"name": "benjaminjonard/koillection",
"version": "1.7.0",
"date": "2025-08-28T18:10:59Z"
},
{
"name": "grokability/snipe-it",
"version": "v8.3.0",
"date": "2025-08-28T17:49:06Z"
},
{
"name": "rcourtman/Pulse",
"version": "v4.9.1",
"date": "2025-08-28T13:34:45Z"
},
{
"name": "msgbyte/tianji",
"version": "v1.24.24",
"date": "2025-08-28T17:27:37Z"
},
{
"name": "gristlabs/grist-core",
"version": "v1.7.3",
"date": "2025-08-28T16:50:02Z"
},
{
"name": "saltstack/salt",
"version": "v3006.15",
"date": "2025-08-28T16:49:46Z"
},
{
"name": "BookStackApp/BookStack",
"version": "v25.07.2",
"date": "2025-08-28T16:46:05Z"
},
{
"name": "Threadfin/Threadfin",
"version": "1.2.37",
"date": "2025-08-28T16:25:55Z"
},
{
"name": "home-assistant/operating-system",
"version": "16.1",
"date": "2025-08-13T07:58:10Z"
},
{
"name": "influxdata/influxdb",
"version": "v3.4.1",
"date": "2025-08-28T13:56:00Z"
},
{
"name": "zitadel/zitadel",
"version": "v4.0.3",
"date": "2025-08-22T07:43:52Z"
},
{
"name": "open-webui/open-webui",
"version": "v0.6.26",
"date": "2025-08-28T10:40:30Z"
},
{
"name": "neo4j/neo4j",
"version": "4.4.45",
"date": "2025-08-28T10:12:16Z"
},
{
"name": "apache/cassandra",
"version": "4.1.10-tentative",
"date": "2025-08-28T10:02:40Z"
},
{
"name": "fuma-nama/fumadocs",
"version": "fumadocs-ui@15.7.4",
"date": "2025-08-28T08:58:06Z"
},
{
"name": "n8n-io/n8n",
"version": "n8n@1.108.2",
"date": "2025-08-27T13:05:35Z"
},
{
"name": "garethgeorge/backrest",
"version": "v1.9.2",
"date": "2025-08-28T07:06:14Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.22.2360",
"date": "2025-08-28T05:55:58Z"
},
{
"name": "gotson/komga",
"version": "1.23.3",
"date": "2025-08-28T02:50:06Z"
},
{
"name": "rabbitmq/rabbitmq-server",
"version": "v4.1.3",
"date": "2025-08-04T12:13:45Z"
},
{
"name": "jeedom/core",
"version": "4.4.19",
"date": "2025-08-28T00:27:14Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v3.6.2",
"date": "2025-07-17T12:08:03Z"
},
{
"name": "keycloak/keycloak",
"version": "26.0.15",
"date": "2025-08-27T12:12:03Z"
},
{
"name": "pocket-id/pocket-id",
"version": "v1.10.0",
"date": "2025-08-27T20:35:47Z"
},
{
"name": "gristlabs/grist-core",
"version": "v1.7.3",
"date": "2025-08-27T20:26:39Z"
},
{
"name": "ipfs/kubo",
"version": "v0.37.0",
"date": "2025-08-27T20:03:52Z"
},
{
"name": "rcourtman/Pulse",
"version": "v4.9.0",
"date": "2025-08-27T19:52:36Z"
},
{
"name": "ollama/ollama",
"version": "v0.11.7",
"date": "2025-08-25T18:04:05Z"
},
{
"name": "home-assistant/core",
"version": "2025.8.3",
@@ -39,41 +179,16 @@
"version": "v0.8.3-beta",
"date": "2025-08-27T18:18:48Z"
},
{
"name": "linkwarden/linkwarden",
"version": "v2.12.1",
"date": "2025-08-27T17:41:58Z"
},
{
"name": "raydak-labs/configarr",
"version": "v1.15.0",
"date": "2025-08-27T17:12:03Z"
},
{
"name": "n8n-io/n8n",
"version": "n8n@1.108.2",
"date": "2025-08-27T13:05:35Z"
},
{
"name": "zwave-js/zwave-js-ui",
"version": "v11.2.1",
"date": "2025-08-27T15:19:02Z"
},
{
"name": "influxdata/influxdb",
"version": "v3.4.0",
"date": "2025-08-27T14:31:44Z"
},
{
"name": "fuma-nama/fumadocs",
"version": "create-fumadocs-app@15.7.3",
"date": "2025-08-27T12:54:44Z"
},
{
"name": "keycloak/keycloak",
"version": "26.0.15",
"date": "2025-08-27T12:12:03Z"
},
{
"name": "Paymenter/Paymenter",
"version": "v1.2.11",
@@ -89,36 +204,11 @@
"version": "v12.0.8",
"date": "2025-08-27T06:22:32Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.22.2353",
"date": "2025-08-27T05:54:54Z"
},
{
"name": "henrygd/beszel",
"version": "v0.12.5",
"date": "2025-08-27T01:15:16Z"
},
{
"name": "jeedom/core",
"version": "4.4.19",
"date": "2025-08-27T00:27:09Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v3.6.2",
"date": "2025-07-17T12:08:03Z"
},
{
"name": "Threadfin/Threadfin",
"version": "1.2.36",
"date": "2025-08-26T20:40:14Z"
},
{
"name": "msgbyte/tianji",
"version": "v1.24.23",
"date": "2025-08-26T18:02:18Z"
},
{
"name": "netbox-community/netbox",
"version": "v4.3.7",
@@ -134,11 +224,6 @@
"version": "latest",
"date": "2025-08-26T14:14:42Z"
},
{
"name": "neo4j/neo4j",
"version": "5.26.11",
"date": "2025-08-26T10:49:38Z"
},
{
"name": "element-hq/synapse",
"version": "v1.137.0",
@@ -194,11 +279,6 @@
"version": "v5.13.0",
"date": "2025-08-25T19:19:51Z"
},
{
"name": "immich-app/immich",
"version": "v1.139.4",
"date": "2025-08-25T18:31:13Z"
},
{
"name": "mealie-recipes/mealie",
"version": "v3.1.2",
@@ -229,11 +309,6 @@
"version": "7.4.2",
"date": "2025-08-25T12:38:14Z"
},
{
"name": "gotson/komga",
"version": "1.23.2",
"date": "2025-08-25T09:39:42Z"
},
{
"name": "emqx/emqx",
"version": "e5.10.1-beta.2",
@@ -271,8 +346,8 @@
},
{
"name": "runtipi/runtipi",
"version": "v4.3.0",
"date": "2025-07-05T12:14:52Z"
"version": "nightly",
"date": "2025-08-24T18:27:58Z"
},
{
"name": "wavelog/wavelog",
@@ -289,11 +364,6 @@
"version": "v2.0.5.5160",
"date": "2025-08-23T21:23:11Z"
},
{
"name": "Lidarr/Lidarr",
"version": "v2.12.4.4658",
"date": "2025-06-09T17:27:45Z"
},
{
"name": "janeczku/calibre-web",
"version": "0.6.25",
@@ -354,11 +424,6 @@
"version": "version/2025.8.1",
"date": "2025-08-22T14:55:30Z"
},
{
"name": "open-webui/open-webui",
"version": "v0.6.25",
"date": "2025-08-22T13:22:43Z"
},
{
"name": "syncthing/syncthing",
"version": "v2.0.3",
@@ -369,11 +434,6 @@
"version": "v10.11.2",
"date": "2025-08-22T06:50:56Z"
},
{
"name": "zitadel/zitadel",
"version": "v4.0.3",
"date": "2025-08-22T07:43:52Z"
},
{
"name": "lazy-media/Reactive-Resume",
"version": "v1.2.4",
@@ -444,11 +504,6 @@
"version": "4.3.7",
"date": "2025-08-20T10:26:21Z"
},
{
"name": "apache/cassandra",
"version": "4.1.10-tentative",
"date": "2025-08-20T10:20:25Z"
},
{
"name": "duplicati/duplicati",
"version": "v2.1.2.0-2.1.2.0_beta_2025-08-20",
@@ -469,11 +524,6 @@
"version": "v6.13.2",
"date": "2025-08-19T18:18:40Z"
},
{
"name": "dgtlmoon/changedetection.io",
"version": "0.50.10",
"date": "2025-08-19T17:21:44Z"
},
{
"name": "karlomikus/bar-assistant",
"version": "v5.8.0",
@@ -564,11 +614,6 @@
"version": "v0.14.1",
"date": "2024-08-29T22:32:51Z"
},
{
"name": "mongodb/mongo",
"version": "r8.2.0",
"date": "2025-08-15T22:02:15Z"
},
{
"name": "jhuckaby/Cronicle",
"version": "v0.9.90",
@@ -599,21 +644,11 @@
"version": "v1.24.5",
"date": "2025-08-13T16:35:52Z"
},
{
"name": "Part-DB/Part-DB-server",
"version": "v1.17.3",
"date": "2025-08-13T14:04:44Z"
},
{
"name": "ellite/Wallos",
"version": "v4.1.1",
"date": "2025-08-13T11:58:04Z"
},
{
"name": "home-assistant/operating-system",
"version": "16.1",
"date": "2025-08-13T07:58:10Z"
},
{
"name": "requarks/wiki",
"version": "v2.5.308",
@@ -639,11 +674,6 @@
"version": "REL_13_22",
"date": "2025-08-11T21:10:58Z"
},
{
"name": "BookStackApp/BookStack",
"version": "v25.07.1",
"date": "2025-08-11T13:53:22Z"
},
{
"name": "FlowiseAI/Flowise",
"version": "flowise@3.0.5",
@@ -679,11 +709,6 @@
"version": "v1.2.0",
"date": "2025-08-09T14:30:52Z"
},
{
"name": "Dolibarr/dolibarr",
"version": "22.0.0",
"date": "2025-08-09T12:48:17Z"
},
{
"name": "authelia/authelia",
"version": "v4.39.6",
@@ -709,11 +734,6 @@
"version": "mariadb-12.0.2",
"date": "2025-08-07T21:23:15Z"
},
{
"name": "rabbitmq/rabbitmq-server",
"version": "v4.1.3",
"date": "2025-08-04T12:13:45Z"
},
{
"name": "Athou/commafeed",
"version": "5.11.0",
@@ -744,11 +764,6 @@
"version": "v0.15.0-rc5",
"date": "2025-08-06T08:55:10Z"
},
{
"name": "garethgeorge/backrest",
"version": "v1.9.1",
"date": "2025-08-06T05:48:33Z"
},
{
"name": "autobrr/autobrr",
"version": "v1.65.0",
@@ -779,11 +794,6 @@
"version": "10.1.44",
"date": "2025-08-04T13:17:59Z"
},
{
"name": "benjaminjonard/koillection",
"version": "1.6.18",
"date": "2025-08-03T21:41:45Z"
},
{
"name": "Tautulli/Tautulli",
"version": "v2.15.3",
@@ -899,11 +909,6 @@
"version": "v12.0.1",
"date": "2025-07-25T11:54:30Z"
},
{
"name": "grokability/snipe-it",
"version": "v8.2.1",
"date": "2025-07-24T14:37:54Z"
},
{
"name": "minio/minio",
"version": "RELEASE.2025-07-23T15-54-02Z",
@@ -969,11 +974,6 @@
"version": "v1.7.2",
"date": "2025-07-10T19:29:26Z"
},
{
"name": "saltstack/salt",
"version": "v3007.6",
"date": "2025-07-10T18:37:08Z"
},
{
"name": "NginxProxyManager/nginx-proxy-manager",
"version": "v2.12.6",

View File

@@ -27,7 +27,7 @@ $STD apt update
$STD apt install -y google-chrome-stable
msg_ok "Installed Chrome"
fetch_and_deploy_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "prebuild" "latest" "/opt/flaresolverr" "flaresolverr_linux_x64.tar.gz"
fetch_and_deploy_gh_release "flaresolverr" "FlareSolverr/FlareSolverr" "v3.3.25" "latest" "/opt/flaresolverr" "flaresolverr_linux_x64.tar.gz"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/flaresolverr.service

View File

@@ -13,6 +13,10 @@ setting_up_container
network_check
update_os
msg_info "Installing dependencies"
$STD apt-get install --no-install-recommends -y build-essential
msg_ok "Installed dependencies"
NODE_VERSION="20" setup_nodejs
MYSQL_VERSION="8.0" setup_mysql

View File

@@ -0,0 +1,118 @@
#!/usr/bin/env bash
# Copyright (c) 2025 Community Scripts ORG
# Author: vhsdream
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/maxdorninger/MediaManager
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
read -r -p "${TAB3}Enter the email address of your first admin user: " admin_email
if [[ "$admin_email" ]]; then
EMAIL="$admin_email"
fi
setup_yq
NODE_VERSION="24" setup_nodejs
setup_uv
PG_VERSION="17" setup_postgresql
msg_info "Setting up PostgreSQL"
DB_NAME="mm_db"
DB_USER="mm_user"
DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)"
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMPLATE template0;"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
{
echo "MediaManager Credentials"
echo "MediaManager Database User: $DB_USER"
echo "MediaManager Database Password: $DB_PASS"
echo "MediaManager Database Name: $DB_NAME"
} >>~/mediamanager.creds
msg_ok "Set up PostgreSQL"
fetch_and_deploy_gh_release "MediaManager" "maxdorninger/MediaManager" "tarball" "latest" "/opt/mediamanager"
msg_info "Configuring MediaManager"
MM_DIR="/opt/mm"
MEDIA_DIR="${MM_DIR}/media"
export CONFIG_DIR="${MM_DIR}/config"
export FRONTEND_FILES_DIR="${MM_DIR}/web/build"
export BASE_PATH=""
export PUBLIC_VERSION=""
export PUBLIC_API_URL="${BASE_PATH}/api/v1"
export BASE_PATH="${BASE_PATH}/web"
cd /opt/mediamanager/web
$STD npm ci
$STD npm run build
mkdir -p {"$MM_DIR"/web,"$MEDIA_DIR","$CONFIG_DIR"}
cp -r build "$FRONTEND_FILES_DIR"
export BASE_PATH=""
export VIRTUAL_ENV="${MM_DIR}/venv"
cd /opt/mediamanager
cp -r {media_manager,alembic*} "$MM_DIR"
$STD /usr/local/bin/uv venv "$VIRTUAL_ENV"
$STD /usr/local/bin/uv sync --locked --active
msg_ok "Configured MediaManager"
msg_info "Creating config and start script"
LOCAL_IP="$(hostname -I | awk '{print $1}')"
SECRET="$(openssl rand -hex 32)"
sed -e "s/localhost:8/$LOCAL_IP:8/g" \
-e "s|/data/|$MEDIA_DIR/|g" \
-e 's/"db"/"localhost"/' \
-e "s/user = \"MediaManager\"/user = \"$DB_USER\"/" \
-e "s/password = \"MediaManager\"/password = \"$DB_PASS\"/" \
-e "s/dbname = \"MediaManager\"/dbname = \"$DB_NAME\"/" \
-e "/^token_secret/s/=.*/= \"$SECRET\"/" \
-e "s/admin@example.com/$EMAIL/" \
-e '/^admin_emails/s/, .*/]/' \
/opt/mediamanager/config.example.toml >"$CONFIG_DIR"/config.toml
mkdir -p "$MEDIA_DIR"/{images,tv,movies,torrents}
cat <<EOF >"$MM_DIR"/start.sh
#!/usr/bin/env bash
export CONFIG_DIR="$CONFIG_DIR"
export FRONTEND_FILES_DIR="$FRONTEND_FILES_DIR"
export BASE_PATH=""
cd "$MM_DIR"
source ./venv/bin/activate
/usr/local/bin/uv run alembic upgrade head
/usr/local/bin/uv run fastapi run ./media_manager/main.py --port 8000
EOF
chmod +x "$MM_DIR"/start.sh
msg_ok "Created config and start script"
msg_info "Creating service"
cat <<EOF >/etc/systemd/system/mediamanager.service
[Unit]
Description=MediaManager Backend Service
After=network.target
[Service]
Type=simple
WorkingDirectory=${MM_DIR}
ExecStart=/usr/bin/bash start.sh
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now mediamanager
msg_ok "Created service"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -165,7 +165,7 @@ function setup_postgresql() {
NEED_PG_INSTALL=true
fi
else
NEED_PG_INSTALL=true
fi
@@ -186,22 +186,18 @@ function setup_postgresql() {
echo "deb https://apt.postgresql.org/pub/repos/apt ${DISTRO}-pgdg main" \
>/etc/apt/sources.list.d/pgdg.list
$STD apt-get update
$STD msg_ok "Repository added"
msg_info "Setup PostgreSQL $PG_VERSION"
$STD apt-get install -y "postgresql-${PG_VERSION}" "postgresql-client-${PG_VERSION}"
if [[ -n "$CURRENT_PG_VERSION" ]]; then
$STD apt-get purge -y "postgresql-${CURRENT_PG_VERSION}" "postgresql-client-${CURRENT_PG_VERSION}" || true
fi
systemctl enable -q --now postgresql
if [[ -n "$CURRENT_PG_VERSION" ]]; then
$STD msg_info "Restoring dumped data"
@@ -1924,3 +1920,69 @@ function setup_ffmpeg() {
ensure_usr_local_bin_persist
msg_ok "Setup FFmpeg $FINAL_VERSION"
}
# ------------------------------------------------------------------------------
# Checks for new GitHub release (latest tag).
#
# Description:
# - Queries the GitHub API for the latest release tag
# - Compares it to a local cached version (~/.<app>)
# - If newer, sets global CHECK_UPDATE_RELEASE and returns 0
#
# Usage:
# if check_for_gh_release "flaresolverr" "FlareSolverr/FlareSolverr"; then
# # trigger update...
# fi
# exit 0
# } (end of update_script not from the function)
#
# Notes:
# - Requires `jq` (auto-installed if missing)
# - Does not modify anything, only checks version state
# - Does not support pre-releases
# ------------------------------------------------------------------------------
check_for_gh_release() {
local app="$1"
local source="$2"
local current_file="$HOME/.${app,,}"
msg_info "Check for update: ${app}"
# DNS check for GitHub
if ! getent hosts api.github.com >/dev/null 2>&1; then
msg_error "Network error: cannot resolve api.github.com"
return 1
fi
# jq check
if ! command -v jq &>/dev/null; then
$STD apt-get update
$STD apt-get install -y jq || {
msg_error "Failed to install jq"
return 1
}
fi
# get latest release
local release
release=$(curl -fsSL "https://api.github.com/repos/${source}/releases/latest" |
jq -r '.tag_name' | sed 's/^v//')
if [[ -z "$release" ]]; then
msg_error "Unable to determine latest release for ${app}"
return 1
fi
local current=""
if [[ -f "$current_file" ]]; then
current=$(<"$current_file")
fi
if [[ "$release" != "$current" ]] || [[ ! -f "$current_file" ]]; then
CHECK_UPDATE_RELEASE="$release"
return 0
else
msg_ok "${app} is up to date (v${release})"
return 1
fi
}

View File

@@ -93,7 +93,7 @@ while true; do
fi
else
# Container: get IP and ping
IP=$(pct exec $instance ip a s dev eth0 | awk '/inet / {print $2}' | cut -d/ -f1)
IP=$(pct exec $instance ip a s dev eth0 | awk '/inet / {print $2}' | cut -d/ -f1 | head -n1)
if ! ping -c 1 $IP >/dev/null 2>&1; then
echo "$(date): CT $instance is not responding, restarting..."
pct stop $instance >/dev/null 2>&1