mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 10:22:50 +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"
 | 
			
		||||
@@ -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
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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