From 39f8b3a64e39dd4f440e47dabb0aa0d8619075ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Borja=20Gardu=C3=B1o?= Date: Sun, 20 Sep 2026 23:34:13 +0200 Subject: [PATCH 1/7] add: tinyMediaManager CT script --- ct/headers/tinymediamanager | 6 + ct/tinymediamanager.sh | 92 ++++++++++++++ install/tinymediamanager-install.sh | 182 ++++++++++++++++++++++++++++ json/tinymediamanager.json | 48 ++++++++ 4 files changed, 328 insertions(+) create mode 100644 ct/headers/tinymediamanager create mode 100644 ct/tinymediamanager.sh create mode 100644 install/tinymediamanager-install.sh create mode 100644 json/tinymediamanager.json diff --git a/ct/headers/tinymediamanager b/ct/headers/tinymediamanager new file mode 100644 index 0000000000..15e98caad6 --- /dev/null +++ b/ct/headers/tinymediamanager @@ -0,0 +1,6 @@ + __ _ __ ___ ___ __ ___ + / /_(_)___ __ __/ |/ /__ ____/ (_)___ _/ |/ /___ _____ ____ _____ ____ _____ + / __/ / __ \/ / / / /|_/ / _ \/ __ / / __ `/ /|_/ / __ `/ __ \/ __ `/ __ `/ _ \/ ___/ +/ /_/ / / / / /_/ / / / / __/ /_/ / / /_/ / / / / /_/ / / / / /_/ / /_/ / __/ / +\__/_/_/ /_/\__, /_/ /_/\___/\__,_/_/\__,_/_/ /_/\__,_/_/ /_/\__,_/\__, /\___/_/ + /____/ /____/ diff --git a/ct/tinymediamanager.sh b/ct/tinymediamanager.sh new file mode 100644 index 0000000000..3af6e885ac --- /dev/null +++ b/ct/tinymediamanager.sh @@ -0,0 +1,92 @@ +#!/usr/bin/env bash +_CS_DEFAULT_URL="https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main" +_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func" +source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func") +# Copyright (c) 2021-2026 community-scripts ORG +# Author: Borja Garduño (Borja-Garduno) +# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# Source: https://www.tinymediamanager.org/ + +APP="tinyMediaManager" +var_tags="${var_tags:-media;library}" +var_cpu="${var_cpu:-2}" +var_ram="${var_ram:-2048}" +var_disk="${var_disk:-12}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" # not verified on Proxmox aarch64 (upstream publishes linux-arm64.tar.xz) +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -f /opt/tinymediamanager/tinyMediaManager ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + ASSET_PATH=$(curl -fsSL https://release.tinymediamanager.org/ | + grep -oE 'v5/dist/tinyMediaManager-[0-9.]+-linux-amd64\.tar\.xz' | + head -1) + if [[ -z "${ASSET_PATH}" ]]; then + msg_error "Could not resolve the official Linux amd64 download URL." + exit 1 + fi + ASSET_URL="https://release.tinymediamanager.org/${ASSET_PATH}" + VERSION=$(basename "${ASSET_PATH}" | grep -oE '[0-9]+(\.[0-9]+)+') + CURRENT=$(cat ~/.tinymediamanager 2>/dev/null || true) + + if [[ -z "${VERSION}" ]]; then + msg_error "Could not parse tinyMediaManager version from download URL." + exit 1 + fi + + if [[ "${CURRENT}" == "${VERSION}" ]]; then + msg_ok "tinyMediaManager is already up to date (${VERSION})" + exit + fi + + msg_info "Stopping tinyMediaManager" + systemctl stop tinymediamanager x11vnc novnc + msg_ok "Stopped tinyMediaManager" + + CLEAN_INSTALL=1 fetch_and_deploy_from_url "${ASSET_URL}" /opt/tinymediamanager + if [[ ! -f /opt/tinymediamanager/tinyMediaManager ]]; then + msg_error "tinyMediaManager binary not found after deploy." + exit 1 + fi + chmod +x /opt/tinymediamanager/tinyMediaManager + cat </opt/tinymediamanager/launcher-extra.yml +javaHome: "" +jvmOpts: + - "-Dtmm.contentfolder=/opt/tinymediamanager_data" + - "-Dtmm.noupdate=true" +env: + - "_JAVA_AWT_WM_NONREPARENTING=1" +EOF + echo "${VERSION}" >~/.tinymediamanager + + msg_info "Starting tinyMediaManager" + systemctl start tinymediamanager + sleep 2 + systemctl start x11vnc novnc + msg_ok "Started tinyMediaManager" + msg_ok "Updated tinyMediaManager ${CURRENT:-unknown} -> ${VERSION}" + 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 "${GATEWAY}${BGN}http://${IP}:6080/vnc.html?resize=scale&autoconnect=true${CL}" diff --git a/install/tinymediamanager-install.sh b/install/tinymediamanager-install.sh new file mode 100644 index 0000000000..f75010db67 --- /dev/null +++ b/install/tinymediamanager-install.sh @@ -0,0 +1,182 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: Borja Garduño (Borja-Garduno) +# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# Source: https://www.tinymediamanager.org/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt install -y \ + xvfb \ + x11vnc \ + novnc \ + websockify \ + openbox \ + x11-xserver-utils \ + x11-utils \ + libxrender1 \ + libxtst6 \ + libxi6 \ + fonts-dejavu-core \ + xz-utils +msg_ok "Installed Dependencies" + +ASSET_PATH=$(curl -fsSL https://release.tinymediamanager.org/ | + grep -oE 'v5/dist/tinyMediaManager-[0-9.]+-linux-amd64\.tar\.xz' | + head -1) +if [[ -z "${ASSET_PATH}" ]]; then + msg_error "Could not resolve the official Linux amd64 download URL." + exit 1 +fi +ASSET_URL="https://release.tinymediamanager.org/${ASSET_PATH}" +VERSION=$(basename "${ASSET_PATH}" | grep -oE '[0-9]+(\.[0-9]+)+') + +fetch_and_deploy_from_url "${ASSET_URL}" /opt/tinymediamanager +if [[ ! -f /opt/tinymediamanager/tinyMediaManager ]]; then + msg_error "tinyMediaManager binary not found after deploy." + exit 1 +fi +chmod +x /opt/tinymediamanager/tinyMediaManager + +msg_info "Configuring tinyMediaManager" +mkdir -p /opt/tinymediamanager_data +cat </opt/tinymediamanager/launcher-extra.yml +javaHome: "" +jvmOpts: + - "-Dtmm.contentfolder=/opt/tinymediamanager_data" + - "-Dtmm.noupdate=true" +env: + - "_JAVA_AWT_WM_NONREPARENTING=1" +EOF +echo "${VERSION}" >~/.tinymediamanager +if ! mountpoint -q /media/movies; then + mkdir -p /media/movies +fi +if ! mountpoint -q /media/tvshows; then + mkdir -p /media/tvshows +fi +msg_ok "Configured tinyMediaManager" + +msg_info "Configuring Openbox" +mkdir -p /root/.config/openbox +cat <<'EOF' >/root/.config/openbox/rc.xml + + + + + true + + + +EOF +msg_ok "Configured Openbox" + +msg_info "Creating Services" +cat </etc/systemd/system/xvfb.service +[Unit] +Description=Virtual Framebuffer X Server +After=network.target + +[Service] +Type=simple +ExecStartPre=/bin/sh -c 'rm -f /tmp/.X1-lock' +ExecStart=/usr/bin/Xvfb :1 -screen 0 1280x800x24 +ExecStartPost=/bin/sh -c 'sleep 1 && DISPLAY=:1 /usr/bin/xset s off && DISPLAY=:1 /usr/bin/xset s noblank && DISPLAY=:1 /usr/bin/xset -dpms' +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target +EOF + +cat </etc/systemd/system/openbox.service +[Unit] +Description=Openbox Window Manager +After=xvfb.service +Requires=xvfb.service + +[Service] +Type=simple +Environment=DISPLAY=:1 +ExecStart=/usr/bin/openbox +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target +EOF + +cat </etc/systemd/system/tinymediamanager.service +[Unit] +Description=tinyMediaManager +After=openbox.service +Requires=openbox.service + +[Service] +Type=simple +User=root +Environment=DISPLAY=:1 +WorkingDirectory=/opt/tinymediamanager +ExecStartPre=/bin/sleep 2 +ExecStart=/opt/tinymediamanager/tinyMediaManager +Restart=on-failure +RestartSec=10 + +[Install] +WantedBy=multi-user.target +EOF + +cat </etc/systemd/system/x11vnc.service +[Unit] +Description=x11vnc Server +After=tinymediamanager.service +Requires=xvfb.service + +[Service] +Type=simple +ExecStart=/usr/bin/x11vnc -display :1 -forever -shared -rfbport 5900 -nopw -noipv6 -xkb -noxdamage -nowf -nowcr -wait 50 -defer 50 +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target +EOF + +cat </etc/systemd/system/novnc.service +[Unit] +Description=noVNC WebSocket Proxy +After=x11vnc.service +Requires=x11vnc.service + +[Service] +Type=simple +ExecStart=/usr/bin/websockify --web=/usr/share/novnc 6080 localhost:5900 +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target +EOF + +systemctl enable -q --now xvfb +sleep 2 +systemctl enable -q --now openbox +sleep 1 +systemctl enable -q --now tinymediamanager +sleep 3 +systemctl enable -q --now x11vnc +sleep 1 +systemctl enable -q --now novnc +msg_ok "Created Services" + +motd_ssh +customize +cleanup_lxc diff --git a/json/tinymediamanager.json b/json/tinymediamanager.json new file mode 100644 index 0000000000..17e507fb42 --- /dev/null +++ b/json/tinymediamanager.json @@ -0,0 +1,48 @@ +{ + "name": "tinyMediaManager", + "slug": "tinymediamanager", + "categories": [13], + "date_created": "2026-09-20", + "type": "ct", + "updateable": true, + "privileged": false, + "architectures": ["amd64"], + "interface_port": 6080, + "documentation": "https://www.tinymediamanager.org/docs/", + "website": "https://www.tinymediamanager.org/", + "repository": "https://gitlab.com/tinyMediaManager/tinyMediaManager", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/tinymediamanager.webp", + "description": "tinyMediaManager is a media library manager for organizing and scraping metadata, artwork, and NFO files for movies and TV shows, ready for Kodi, Plex, Jellyfin and Emby. Browser access is the desktop UI via noVNC.", + "install_methods": [ + { + "type": "default", + "script": "ct/tinymediamanager.sh", + "config_path": "/opt/tinymediamanager_data", + "resources": { + "cpu": 2, + "ram": 2048, + "hdd": 12, + "os": "Debian", + "version": "13" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "Access is via noVNC (desktop UI streamed to the browser), not a native web app. Open http://:6080/vnc.html?resize=scale&autoconnect=true. Direct VNC is available on port 5900 (no password by default).", + "type": "info" + }, + { + "text": "Media defaults to /media/movies and /media/tvshows inside the LXC. After install, bind host storage with: pct set -mp0 /path/on/host,mp=/media/movies and pct set -mp1 /path/on/host,mp=/media/tvshows (or tools/pve/storage-share-helper.sh). On unprivileged LXCs, match host ownership/ACLs to the container UID mapping — do not chmod 777.", + "type": "info" + }, + { + "text": "Application data (settings, cache, logs, backups) is persisted in /opt/tinymediamanager_data via launcher-extra.yml (-Dtmm.contentfolder). Program files live in /opt/tinymediamanager. Built-in auto-update is disabled so updates go through the helper script.", + "type": "info" + } + ] +} From e624d12e96f3ca0c4776267cc79438ce47d8c3ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Borja=20Gardu=C3=B1o?= Date: Mon, 28 Sep 2026 15:51:51 +0200 Subject: [PATCH 2/7] fix(tinymediamanager): install libmediainfo and enable legacy filechooser --- ct/tinymediamanager.sh | 1 + install/tinymediamanager-install.sh | 2 ++ 2 files changed, 3 insertions(+) diff --git a/ct/tinymediamanager.sh b/ct/tinymediamanager.sh index 3af6e885ac..5d5f240d21 100644 --- a/ct/tinymediamanager.sh +++ b/ct/tinymediamanager.sh @@ -68,6 +68,7 @@ javaHome: "" jvmOpts: - "-Dtmm.contentfolder=/opt/tinymediamanager_data" - "-Dtmm.noupdate=true" + - "-Dtmm.legacy.filechooser=true" env: - "_JAVA_AWT_WM_NONREPARENTING=1" EOF diff --git a/install/tinymediamanager-install.sh b/install/tinymediamanager-install.sh index f75010db67..e3d9869aa8 100644 --- a/install/tinymediamanager-install.sh +++ b/install/tinymediamanager-install.sh @@ -25,6 +25,7 @@ $STD apt install -y \ libxrender1 \ libxtst6 \ libxi6 \ + libmediainfo0v5 \ fonts-dejavu-core \ xz-utils msg_ok "Installed Dependencies" @@ -53,6 +54,7 @@ javaHome: "" jvmOpts: - "-Dtmm.contentfolder=/opt/tinymediamanager_data" - "-Dtmm.noupdate=true" + - "-Dtmm.legacy.filechooser=true" env: - "_JAVA_AWT_WM_NONREPARENTING=1" EOF From d6e0dc2d45c180bd2dac7db4e73de1cb2bac1118 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Borja=20Gardu=C3=B1o?= Date: Tue, 29 Sep 2026 12:12:02 +0200 Subject: [PATCH 3/7] fix(tinymediamanager): raise default Xvfb resolution to 1920x1080 --- install/tinymediamanager-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/tinymediamanager-install.sh b/install/tinymediamanager-install.sh index e3d9869aa8..61160202f6 100644 --- a/install/tinymediamanager-install.sh +++ b/install/tinymediamanager-install.sh @@ -90,7 +90,7 @@ After=network.target [Service] Type=simple ExecStartPre=/bin/sh -c 'rm -f /tmp/.X1-lock' -ExecStart=/usr/bin/Xvfb :1 -screen 0 1280x800x24 +ExecStart=/usr/bin/Xvfb :1 -screen 0 1920x1080x24 ExecStartPost=/bin/sh -c 'sleep 1 && DISPLAY=:1 /usr/bin/xset s off && DISPLAY=:1 /usr/bin/xset s noblank && DISPLAY=:1 /usr/bin/xset -dpms' Restart=on-failure RestartSec=5 From 4aaf1e8ea0eb0ee001cb4caf9c85c7eb5939016c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Borja=20Gardu=C3=B1o?= Date: Tue, 29 Sep 2026 12:49:16 +0200 Subject: [PATCH 4/7] fix(tinymediamanager): raise default resources to 4 CPU / 4 GiB --- ct/tinymediamanager.sh | 4 ++-- json/tinymediamanager.json | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/ct/tinymediamanager.sh b/ct/tinymediamanager.sh index 5d5f240d21..bb494d293b 100644 --- a/ct/tinymediamanager.sh +++ b/ct/tinymediamanager.sh @@ -9,8 +9,8 @@ source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_ APP="tinyMediaManager" var_tags="${var_tags:-media;library}" -var_cpu="${var_cpu:-2}" -var_ram="${var_ram:-2048}" +var_cpu="${var_cpu:-4}" +var_ram="${var_ram:-4096}" var_disk="${var_disk:-12}" var_os="${var_os:-debian}" var_version="${var_version:-13}" diff --git a/json/tinymediamanager.json b/json/tinymediamanager.json index 17e507fb42..a155c290cc 100644 --- a/json/tinymediamanager.json +++ b/json/tinymediamanager.json @@ -19,8 +19,8 @@ "script": "ct/tinymediamanager.sh", "config_path": "/opt/tinymediamanager_data", "resources": { - "cpu": 2, - "ram": 2048, + "cpu": 4, + "ram": 4096, "hdd": 12, "os": "Debian", "version": "13" @@ -40,6 +40,10 @@ "text": "Media defaults to /media/movies and /media/tvshows inside the LXC. After install, bind host storage with: pct set -mp0 /path/on/host,mp=/media/movies and pct set -mp1 /path/on/host,mp=/media/tvshows (or tools/pve/storage-share-helper.sh). On unprivileged LXCs, match host ownership/ACLs to the container UID mapping — do not chmod 777.", "type": "info" }, + { + "text": "Defaults are 4 CPU / 4096 MiB RAM. Large TV libraries (many episodes) are CPU-heavy during source updates; increase resources further if scans stay saturated.", + "type": "info" + }, { "text": "Application data (settings, cache, logs, backups) is persisted in /opt/tinymediamanager_data via launcher-extra.yml (-Dtmm.contentfolder). Program files live in /opt/tinymediamanager. Built-in auto-update is disabled so updates go through the helper script.", "type": "info" From 2bf62409c1e48e06ca1d98a995d2d99a46a35790 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Borja=20Gardu=C3=B1o?= Date: Wed, 14 Oct 2026 14:34:24 +0200 Subject: [PATCH 5/7] fix(tinymediamanager): leave arm64 unset and resolve release arch Upstream ships linux-arm64; ask on aarch64 until verified on Proxmox. --- ct/tinymediamanager.sh | 6 +++--- install/tinymediamanager-install.sh | 4 ++-- json/tinymediamanager.json | 1 - 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/ct/tinymediamanager.sh b/ct/tinymediamanager.sh index bb494d293b..522729269f 100644 --- a/ct/tinymediamanager.sh +++ b/ct/tinymediamanager.sh @@ -14,7 +14,7 @@ var_ram="${var_ram:-4096}" var_disk="${var_disk:-12}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" # not verified on Proxmox aarch64 (upstream publishes linux-arm64.tar.xz) +#var_arm64="${var_arm64:-no}" # unset = ask the user; set yes/no only when verified (upstream publishes linux-arm64.tar.xz) var_unprivileged="${var_unprivileged:-1}" header_info "$APP" @@ -33,10 +33,10 @@ function update_script() { fi ASSET_PATH=$(curl -fsSL https://release.tinymediamanager.org/ | - grep -oE 'v5/dist/tinyMediaManager-[0-9.]+-linux-amd64\.tar\.xz' | + grep -oE "v5/dist/tinyMediaManager-[0-9.]+-linux-$(arch_resolve amd64 arm64)\\.tar\\.xz" | head -1) if [[ -z "${ASSET_PATH}" ]]; then - msg_error "Could not resolve the official Linux amd64 download URL." + msg_error "Could not resolve the official Linux download URL." exit 1 fi ASSET_URL="https://release.tinymediamanager.org/${ASSET_PATH}" diff --git a/install/tinymediamanager-install.sh b/install/tinymediamanager-install.sh index 61160202f6..9ae60a9c8f 100644 --- a/install/tinymediamanager-install.sh +++ b/install/tinymediamanager-install.sh @@ -31,10 +31,10 @@ $STD apt install -y \ msg_ok "Installed Dependencies" ASSET_PATH=$(curl -fsSL https://release.tinymediamanager.org/ | - grep -oE 'v5/dist/tinyMediaManager-[0-9.]+-linux-amd64\.tar\.xz' | + grep -oE "v5/dist/tinyMediaManager-[0-9.]+-linux-$(arch_resolve amd64 arm64)\\.tar\\.xz" | head -1) if [[ -z "${ASSET_PATH}" ]]; then - msg_error "Could not resolve the official Linux amd64 download URL." + msg_error "Could not resolve the official Linux download URL." exit 1 fi ASSET_URL="https://release.tinymediamanager.org/${ASSET_PATH}" diff --git a/json/tinymediamanager.json b/json/tinymediamanager.json index a155c290cc..01b6a01716 100644 --- a/json/tinymediamanager.json +++ b/json/tinymediamanager.json @@ -6,7 +6,6 @@ "type": "ct", "updateable": true, "privileged": false, - "architectures": ["amd64"], "interface_port": 6080, "documentation": "https://www.tinymediamanager.org/docs/", "website": "https://www.tinymediamanager.org/", From 4e66d98a325e8514f3b07cb653989fb00da41085 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Borja=20Gardu=C3=B1o?= Date: Wed, 14 Oct 2026 14:41:14 +0200 Subject: [PATCH 6/7] fix(tinymediamanager): drop redundant checks and simplify service start Rely on unit dependencies instead of staggered sleeps; let deploy failures surface via catch_errors. --- ct/tinymediamanager.sh | 13 ------------- install/tinymediamanager-install.sh | 20 +++----------------- 2 files changed, 3 insertions(+), 30 deletions(-) diff --git a/ct/tinymediamanager.sh b/ct/tinymediamanager.sh index 522729269f..0f00fea5a2 100644 --- a/ct/tinymediamanager.sh +++ b/ct/tinymediamanager.sh @@ -35,19 +35,10 @@ function update_script() { ASSET_PATH=$(curl -fsSL https://release.tinymediamanager.org/ | grep -oE "v5/dist/tinyMediaManager-[0-9.]+-linux-$(arch_resolve amd64 arm64)\\.tar\\.xz" | head -1) - if [[ -z "${ASSET_PATH}" ]]; then - msg_error "Could not resolve the official Linux download URL." - exit 1 - fi ASSET_URL="https://release.tinymediamanager.org/${ASSET_PATH}" VERSION=$(basename "${ASSET_PATH}" | grep -oE '[0-9]+(\.[0-9]+)+') CURRENT=$(cat ~/.tinymediamanager 2>/dev/null || true) - if [[ -z "${VERSION}" ]]; then - msg_error "Could not parse tinyMediaManager version from download URL." - exit 1 - fi - if [[ "${CURRENT}" == "${VERSION}" ]]; then msg_ok "tinyMediaManager is already up to date (${VERSION})" exit @@ -58,10 +49,6 @@ function update_script() { msg_ok "Stopped tinyMediaManager" CLEAN_INSTALL=1 fetch_and_deploy_from_url "${ASSET_URL}" /opt/tinymediamanager - if [[ ! -f /opt/tinymediamanager/tinyMediaManager ]]; then - msg_error "tinyMediaManager binary not found after deploy." - exit 1 - fi chmod +x /opt/tinymediamanager/tinyMediaManager cat </opt/tinymediamanager/launcher-extra.yml javaHome: "" diff --git a/install/tinymediamanager-install.sh b/install/tinymediamanager-install.sh index 9ae60a9c8f..85a262e4a0 100644 --- a/install/tinymediamanager-install.sh +++ b/install/tinymediamanager-install.sh @@ -33,18 +33,10 @@ msg_ok "Installed Dependencies" ASSET_PATH=$(curl -fsSL https://release.tinymediamanager.org/ | grep -oE "v5/dist/tinyMediaManager-[0-9.]+-linux-$(arch_resolve amd64 arm64)\\.tar\\.xz" | head -1) -if [[ -z "${ASSET_PATH}" ]]; then - msg_error "Could not resolve the official Linux download URL." - exit 1 -fi ASSET_URL="https://release.tinymediamanager.org/${ASSET_PATH}" VERSION=$(basename "${ASSET_PATH}" | grep -oE '[0-9]+(\.[0-9]+)+') fetch_and_deploy_from_url "${ASSET_URL}" /opt/tinymediamanager -if [[ ! -f /opt/tinymediamanager/tinyMediaManager ]]; then - msg_error "tinyMediaManager binary not found after deploy." - exit 1 -fi chmod +x /opt/tinymediamanager/tinyMediaManager msg_info "Configuring tinyMediaManager" @@ -168,15 +160,9 @@ RestartSec=5 WantedBy=multi-user.target EOF -systemctl enable -q --now xvfb -sleep 2 -systemctl enable -q --now openbox -sleep 1 -systemctl enable -q --now tinymediamanager -sleep 3 -systemctl enable -q --now x11vnc -sleep 1 -systemctl enable -q --now novnc +for svc in xvfb openbox tinymediamanager x11vnc novnc; do + systemctl enable -q --now "$svc" +done msg_ok "Created Services" motd_ssh From e1b1f278a5a87a4f236fdc51c6f17784dcb53835 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Borja=20Gardu=C3=B1o?= Date: Wed, 14 Oct 2026 14:43:27 +0200 Subject: [PATCH 7/7] fix(tinymediamanager): trim notes and simplify media placeholders Keep /media/{movies,tvshows} as optional bind-mount targets; document contentfolder for CLEAN_INSTALL-safe updates. --- install/tinymediamanager-install.sh | 7 +------ json/tinymediamanager.json | 10 +++------- 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/install/tinymediamanager-install.sh b/install/tinymediamanager-install.sh index 85a262e4a0..5aff0960d7 100644 --- a/install/tinymediamanager-install.sh +++ b/install/tinymediamanager-install.sh @@ -51,12 +51,7 @@ env: - "_JAVA_AWT_WM_NONREPARENTING=1" EOF echo "${VERSION}" >~/.tinymediamanager -if ! mountpoint -q /media/movies; then - mkdir -p /media/movies -fi -if ! mountpoint -q /media/tvshows; then - mkdir -p /media/tvshows -fi +mkdir -p /media/movies /media/tvshows msg_ok "Configured tinyMediaManager" msg_info "Configuring Openbox" diff --git a/json/tinymediamanager.json b/json/tinymediamanager.json index 01b6a01716..62f6fa0e8f 100644 --- a/json/tinymediamanager.json +++ b/json/tinymediamanager.json @@ -32,19 +32,15 @@ }, "notes": [ { - "text": "Access is via noVNC (desktop UI streamed to the browser), not a native web app. Open http://:6080/vnc.html?resize=scale&autoconnect=true. Direct VNC is available on port 5900 (no password by default).", + "text": "Access is via VNC on http://:6080/vnc.html?resize=scale&autoconnect=true or on port 5900 with a VNC client.", "type": "info" }, { - "text": "Media defaults to /media/movies and /media/tvshows inside the LXC. After install, bind host storage with: pct set -mp0 /path/on/host,mp=/media/movies and pct set -mp1 /path/on/host,mp=/media/tvshows (or tools/pve/storage-share-helper.sh). On unprivileged LXCs, match host ownership/ACLs to the container UID mapping — do not chmod 777.", + "text": "Empty /media/movies and /media/tvshows folders are created as optional bind-mount targets (e.g. pct set -mp0 /path/on/host,mp=/media/movies). On unprivileged LXCs, match host ownership to the container UID mapping.", "type": "info" }, { - "text": "Defaults are 4 CPU / 4096 MiB RAM. Large TV libraries (many episodes) are CPU-heavy during source updates; increase resources further if scans stay saturated.", - "type": "info" - }, - { - "text": "Application data (settings, cache, logs, backups) is persisted in /opt/tinymediamanager_data via launcher-extra.yml (-Dtmm.contentfolder). Program files live in /opt/tinymediamanager. Built-in auto-update is disabled so updates go through the helper script.", + "text": "App data lives in /opt/tinymediamanager_data (-Dtmm.contentfolder) so CLEAN_INSTALL updates can replace /opt/tinymediamanager without wiping settings or the library. Built-in auto-update is disabled; use the helper script.", "type": "info" } ]