Repository navigation
add: tinyMediaManager #2326
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
Borja-Garduno
wants to merge
9
commits into
community-scripts:main
Choose a base branch
from
Borja-Garduno:add-script-tinymediamanager
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+298
−0
Open
add: tinyMediaManager #2326
Changes from all commits
Commits
Show all changes
9 commits
Select commit
Hold shift + click to select a range
39f8b3a
add: tinyMediaManager CT script
e624d12
fix(tinymediamanager): install libmediainfo and enable legacy filecho…
8388039
Merge branch 'main' of https://github.com/Borja-Garduno/ProxmoxVED in…
d6e0dc2
fix(tinymediamanager): raise default Xvfb resolution to 1920x1080
4aaf1e8
fix(tinymediamanager): raise default resources to 4 CPU / 4 GiB
f1d36cd
Merge branch 'community-scripts:main' into add-script-tinymediamanager
Borja-Garduno 2bf6240
fix(tinymediamanager): leave arm64 unset and resolve release arch
4e66d98
fix(tinymediamanager): drop redundant checks and simplify service start
e1b1f27
fix(tinymediamanager): trim notes and simplify media placeholders
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| __ _ __ ___ ___ __ ___ | ||
| / /_(_)___ __ __/ |/ /__ ____/ (_)___ _/ |/ /___ _____ ____ _____ ____ _____ | ||
| / __/ / __ \/ / / / /|_/ / _ \/ __ / / __ `/ /|_/ / __ `/ __ \/ __ `/ __ `/ _ \/ ___/ | ||
| / /_/ / / / / /_/ / / / / __/ /_/ / / /_/ / / / / /_/ / / / / /_/ / /_/ / __/ / | ||
| \__/_/_/ /_/\__, /_/ /_/\___/\__,_/_/\__,_/_/ /_/\__,_/_/ /_/\__,_/\__, /\___/_/ | ||
| /____/ /____/ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,80 @@ | ||
| #!/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:-4}" | ||
| 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}" # unset = ask the user; set yes/no only when verified (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-$(arch_resolve amd64 arm64)\\.tar\\.xz" | | ||
| head -1) | ||
| 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 [[ "${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 | ||
| chmod +x /opt/tinymediamanager/tinyMediaManager | ||
| cat <<EOF >/opt/tinymediamanager/launcher-extra.yml | ||
| javaHome: "" | ||
| jvmOpts: | ||
| - "-Dtmm.contentfolder=/opt/tinymediamanager_data" | ||
| - "-Dtmm.noupdate=true" | ||
| - "-Dtmm.legacy.filechooser=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}" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,165 @@ | ||
| #!/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 \ | ||
| libmediainfo0v5 \ | ||
| 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-$(arch_resolve amd64 arm64)\\.tar\\.xz" | | ||
| head -1) | ||
| 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 | ||
| chmod +x /opt/tinymediamanager/tinyMediaManager | ||
|
|
||
| msg_info "Configuring tinyMediaManager" | ||
| mkdir -p /opt/tinymediamanager_data | ||
| cat <<EOF >/opt/tinymediamanager/launcher-extra.yml | ||
| javaHome: "" | ||
| jvmOpts: | ||
| - "-Dtmm.contentfolder=/opt/tinymediamanager_data" | ||
| - "-Dtmm.noupdate=true" | ||
| - "-Dtmm.legacy.filechooser=true" | ||
| env: | ||
| - "_JAVA_AWT_WM_NONREPARENTING=1" | ||
| EOF | ||
| echo "${VERSION}" >~/.tinymediamanager | ||
| mkdir -p /media/movies /media/tvshows | ||
| msg_ok "Configured tinyMediaManager" | ||
|
|
||
| msg_info "Configuring Openbox" | ||
| mkdir -p /root/.config/openbox | ||
| cat <<'EOF' >/root/.config/openbox/rc.xml | ||
| <?xml version="1.0" encoding="UTF-8"?> | ||
| <openbox_config xmlns="http://openbox.org/3.4/rc"> | ||
| <applications> | ||
| <application class="*"> | ||
| <maximized>true</maximized> | ||
| </application> | ||
| </applications> | ||
| </openbox_config> | ||
| EOF | ||
| msg_ok "Configured Openbox" | ||
|
|
||
| msg_info "Creating Services" | ||
| cat <<EOF >/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 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 | ||
|
|
||
| [Install] | ||
| WantedBy=multi-user.target | ||
| EOF | ||
|
|
||
| cat <<EOF >/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 <<EOF >/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 <<EOF >/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 <<EOF >/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 | ||
|
|
||
| for svc in xvfb openbox tinymediamanager x11vnc novnc; do | ||
| systemctl enable -q --now "$svc" | ||
| done | ||
| msg_ok "Created Services" | ||
|
|
||
| motd_ssh | ||
| customize | ||
| cleanup_lxc | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,47 @@ | ||
| { | ||
| "name": "tinyMediaManager", | ||
| "slug": "tinymediamanager", | ||
| "categories": [13], | ||
| "date_created": "2026-09-20", | ||
| "type": "ct", | ||
| "updateable": true, | ||
| "privileged": false, | ||
| "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": 4, | ||
| "ram": 4096, | ||
| "hdd": 12, | ||
| "os": "Debian", | ||
| "version": "13" | ||
| } | ||
| } | ||
| ], | ||
| "default_credentials": { | ||
| "username": null, | ||
| "password": null | ||
| }, | ||
| "notes": [ | ||
| { | ||
| "text": "Access is via VNC on http://<IP>:6080/vnc.html?resize=scale&autoconnect=true or on port 5900 with a VNC client.", | ||
| "type": "info" | ||
| }, | ||
| { | ||
| "text": "Empty /media/movies and /media/tvshows folders are created as optional bind-mount targets (e.g. pct set <CTID> -mp0 /path/on/host,mp=/media/movies). On unprivileged LXCs, match host ownership to the container UID mapping.", | ||
| "type": "info" | ||
| }, | ||
| { | ||
| "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" | ||
| } | ||
| ] | ||
| } |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.