mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-11-04 18:32:51 +00:00
Compare commits
18 Commits
2025-08-27
...
2025-08-28
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f19659bea0 | ||
|
|
9cfb549dca | ||
|
|
ba09cbd9cc | ||
|
|
bc4d09b073 | ||
|
|
fb2d91abe7 | ||
|
|
5146385f4c | ||
|
|
346a8e140c | ||
|
|
42aa8f8868 | ||
|
|
459772162f | ||
|
|
1d65650d28 | ||
|
|
a2099bc195 | ||
|
|
896545ab1b | ||
|
|
522f427677 | ||
|
|
5d70455d93 | ||
|
|
01a91d8b4f | ||
|
|
f66a60ee47 | ||
|
|
b4e74b2a17 | ||
|
|
644e5900d9 |
27
CHANGELOG.md
27
CHANGELOG.md
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
__ __ __
|
||||
/ / / /___ ____ __________/ /__ _____
|
||||
/ /_/ / __ \/ __ `/ ___/ __ / _ \/ ___/
|
||||
/ __ / /_/ / /_/ / / / /_/ / __/ /
|
||||
/_/ /_/\____/\__,_/_/ \__,_/\___/_/
|
||||
|
||||
6
ct/headers/mediamanager
Normal file
6
ct/headers/mediamanager
Normal file
@@ -0,0 +1,6 @@
|
||||
__ ___ ___ __ ___
|
||||
/ |/ /__ ____/ (_)___ _/ |/ /___ _____ ____ _____ ____ _____
|
||||
/ /|_/ / _ \/ __ / / __ `/ /|_/ / __ `/ __ \/ __ `/ __ `/ _ \/ ___/
|
||||
/ / / / __/ /_/ / / /_/ / / / / /_/ / / / / /_/ / /_/ / __/ /
|
||||
/_/ /_/\___/\__,_/_/\__,_/_/ /_/\__,_/_/ /_/\__,_/\__, /\___/_/
|
||||
/____/
|
||||
@@ -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
79
ct/mediamanager.sh
Normal 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}"
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
|
||||
45
frontend/public/json/mediamanager.json
Normal file
45
frontend/public/json/mediamanager.json
Normal 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"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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",
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
118
install/mediamanager-install.sh
Normal file
118
install/mediamanager-install.sh
Normal 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"
|
||||
@@ -187,22 +187,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"
|
||||
su - postgres -c "psql < /var/lib/postgresql/backup_$(date +%F)_v${CURRENT_PG_VERSION}.sql"
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user