-
[Support] Human-126094 - docker templates
🚀 v2.60.0 - Moving files onto NTFS disks and smaller fixes is live registry.gitlab.com/misterjb/x265-butler:2.60.0 and :latest are up. amd64-only image on a Debian 13 (Trixie) base. Pull / upgrade (we recommend keeping the :latest tag): docker pull registry.gitlab.com/misterjb/x265-butler:latest docker restart x265-butler Setup guide (install, updates, GPU): https://gitlab.com/MisterJB/x265-butler/-/blob/main/docs/user/README.md NVIDIA, Intel or AMD GPU: setup and checks in the GPU guide: https://gitlab.com/MisterJB/x265-butler/-/blob/main/docs/user/gpu.md Finished encodes could not be moved onto disks that show every file as owned by root, such as NTFS or exFAT disks mounted without a uid= option (common with Unassigned Devices). The job failed with "EPERM: operation not permitted, copyfile". This release fixes that and a few smaller problems. Nothing changes in how files are encoded. No database migration. Thanks to the user who reported the EPERM failure and confirmed the cause on their own system. 🛠 FIXES • Moving onto NTFS/exFAT disks without uid=: the app runs as your PUID/PGID and the copy also tried to copy the original file date and permissions, which only root may do on such disks. The app now copies the file itself and treats date and permissions as best effort. This covers finishing a job, replacing originals, the trash and restoring. Your original was never at risk. • On such disks the encoded file carries the time it was moved as its modification time, because the disk does not let the app set the original date. That is noted in the diagnostic log, no longer as a warning for every job. • Share depth: an empty Max Depth field now shows the default of 12 folder levels instead of an infinity sign. The file watcher now follows the same depth as the scan, so new files deeper than a share's Max Depth are no longer picked up (before, the next scan marked them as vanished). If you relied on that, raise Max Depth for that share (up to 50). • With sign-in on, reloading or returning to a page after the session ended now shows the "Session expired" hint on the login page; after logging out it does not. Staying on an older version for now? Mount the NTFS/exFAT disk with your PUID/PGID as owner (for example uid=99,gid=100). With 2.60.0 that is no longer needed. Full notes: https://gitlab.com/MisterJB/x265-butler/-/releases/v2.60.0 ♻️ ROLLBACK Only if v2.60.0 breaks something for you, and please report it here. Stop the container and back up your /config folder (AppData) first, then set the Repository field to registry.gitlab.com/misterjb/x265-butler:2.59.0. This release has no database migration; keep the backup anyway. Switch back to :latest once a fix is out.
-
[Support] Human-126094 - docker templates
Thanks @Foca68 for running the commands, that matches what we reproduced here exactly. What happens: the NTFS disk is mounted without a uid= option, so every file on it shows root (0:0) as its owner. The app runs as your PUID/PGID (99:100). When Node copies a file, it creates the new file (that works) and then tries to copy the source's timestamps and permissions onto it. Linux only allows that for the file's owner or root, so the copy fails with EPERM. The 0:0 you saw for /proc/1 is expected: PID 1 is the init process, the app itself runs as 99:100. The fix is done and will ship with the next release (2.60.0). The app now writes the copy itself and treats timestamps and permissions as best effort, so the move no longer fails on disks like yours. One visible difference on such disks: the encoded file gets the time of the move as its modification time, because the disk does not let the app set the original one. The app records that in its diagnostic log, not as a warning. You don't need to change the mount options. uid=99,gid=100 on the disk is only a workaround for older versions, and I don't know whether Unassigned Devices offers it per disk. Thanks again for the detailed report and for testing on your side.
-
[Support] Human-126094 - docker templates
Thanks @Foca68 for the detailed report, it made this easy to track down. The Butler process does not run as root. The entrypoint starts as root, then drops to PUID:PGID (99:100 by default, PUID=0 is rejected) before Node starts. docker exec opens a root shell, so your container tests had rights the app does not have. The final move from /cache to /media uses Node's fs.copyFile(). Besides the data, it copies the source file's mode and timestamps onto the new file. Linux only allows that for the file's owner or root. NTFS and exFAT disks report the owner from their mount options for every file (root if none is given), so the file Butler just created belongs to root and that step fails with EPERM. Plain cp does not keep mode and timestamps, which is why it works. I reproduced your exact error message this way: NTFS disk without uid= option, copy as user 99:100. The same copy as root succeeds, and so does a mount with uid=99,gid=100. This step has not changed in 2.59.0. Could you confirm on the Unraid host? Replace x265-butler with your container name and 99:100 with your PUID:PGID if different. 1. User the app runs as: docker exec x265-butler stat -c '%u:%g' /proc/1 2. Filesystem of the branch: findmnt -T /mnt/disks/SG3_TV_Shows -o TARGET,FSTYPE,OPTIONS 3. Your Node test as the app user: docker exec -u 99:100 x265-butler sh -c 'head -c 16M /dev/zero > /cache/eperm-test.bin' docker exec -u 99:100 x265-butler node -e "require('fs').promises.copyFile('/cache/eperm-test.bin','/media/TV Shows/Columbo (1971)/Season 06/eperm-test.tmp').then(()=>console.log('ok'),e=>console.log(e.message))" Cleanup: docker exec x265-butler rm -f /cache/eperm-test.bin "/media/TV Shows/Columbo (1971)/Season 06/eperm-test.tmp" If step 3 prints EPERM, that confirms it. Your original file was not touched; the job only lost the encoded copy. Workaround until the fix: mount that disk with uid=99,gid=100 (your PUID:PGID). In my test that made the move work. Fix on my side: the move will copy the data itself and only try to keep mode and timestamps where the filesystem allows it, without failing the job.
-
[Support] Human-126094 - docker templates
🚀 v2.59.0 - Safer settings import and sign-in fixes is live registry.gitlab.com/misterjb/x265-butler:2.59.0 and :latest are up. amd64-only image on a Debian 13 (Trixie) base. Pull / upgrade (we recommend keeping the :latest tag): docker pull registry.gitlab.com/misterjb/x265-butler:latest docker restart x265-butler Setup guide (install, updates, GPU): https://gitlab.com/MisterJB/x265-butler/-/blob/main/docs/user/README.md NVIDIA, Intel or AMD GPU: setup and checks in the GPU guide: https://gitlab.com/MisterJB/x265-butler/-/blob/main/docs/user/gpu.md This release closes a gap in the login limit, makes importing settings safe to try, and fixes a few smaller problems. Nothing changes in how files are encoded. No database migration. 🔒 SECURITY • The login limit (five failed attempts per minute) could be bypassed through a request header and through requests sent at the same time. Both are fixed. Without "Trust X-Forwarded-For header" all clients now share one counter; behind a reverse proxy that strips client-supplied X-Forwarded-For you can turn that setting on to count per client address. Only relevant if you switched sign-in on. ⚙️ SETTINGS IMPORT • An exported settings file now restores exactly what was exported, including settings that were not set at the time. • Apply first keeps your current settings as a backup in this browser. The settings card then offers Undo import, Save as file and Discard backup; undo also works after a reload or on a later visit. • If the settings changed after the preview (for example in another tab), Apply recalculates the preview instead of applying old values. 🛠 FIXES • Polled shares (network and FUSE mounts such as the unRAID user share): a file that appeared in the same moment as another one in the same folder could be missed until the next scan. The watcher now picks it up. • Estimate page: the "Max depth" field now works (0 to 50; empty uses the share's depth). • With sign-in on, the login page no longer fills the browser console with 401 errors, and live updates start right away after signing in. • With sign-in on, a page left open when the session expires now takes you to the sign-in page instead of silently losing its live updates. Full notes: https://gitlab.com/MisterJB/x265-butler/-/releases/v2.59.0 ♻️ ROLLBACK Only if v2.59.0 breaks something for you, and please report it here. Stop the container and back up your /config folder (AppData) first, then set the Repository field to registry.gitlab.com/misterjb/x265-butler:2.58.0. This release has no database migration; keep the backup anyway. Switch back to :latest once a fix is out.
-
[Support] Human-126094 - docker templates
🚀 v2.58.0 - Fresh foundations and everyday fixes is live registry.gitlab.com/misterjb/x265-butler:2.58.0 and :latest are up. amd64-only image on a Debian 13 (Trixie) base. Pull / upgrade (we recommend keeping the :latest tag): docker pull registry.gitlab.com/misterjb/x265-butler:latest docker restart x265-butler Setup guide (install, updates, GPU): https://gitlab.com/MisterJB/x265-butler/-/blob/main/docs/user/README.md NVIDIA, Intel or AMD GPU: setup and checks in the GPU guide: https://gitlab.com/MisterJB/x265-butler/-/blob/main/docs/user/gpu.md The app now runs on Node.js 24, Next.js 16 and a new SQLite driver, and a set of everyday annoyances is gone. Nothing changes in how files are encoded. No database migration, no new settings. 🛠 FIXES • Trash with sign-in turned on: the trash page showed no entries although files were in it. It lists them now. • Language setting: saving another language under Settings, General (or importing settings with another language) now switches the page to that language right away. • Benchmark page: always acts on the run it shows, follows a run started in another tab, and results no longer vanish until a reload. • Live log: no more skipped or repeated lines, also under heavy output or after a dropped connection. • A stored quality value (CRF) outside 0 to 51 no longer stops the queue; the job uses the default quality and the log says so. • Sign-in settings: an expired session sends you to the sign-in page, all messages there are translated. • Phones: larger header buttons, page header buttons wrap instead of running off the screen. ✨ NEW • Benchmark: a finished run's page has "New run with these settings". The form opens with that run's settings and files; keep or change the file, then start. Full notes: https://gitlab.com/MisterJB/x265-butler/-/releases/v2.58.0 ♻️ ROLLBACK Only if v2.58.0 breaks something for you, and please report it here. Stop the container and back up your /config folder (AppData) first, then set the Repository field to registry.gitlab.com/misterjb/x265-butler:2.57.0. This release has no database migration, and 2.57.0 opened a database written by 2.58.0 without problems in our test; keep the backup anyway. Switch back to :latest once a fix is out.
-
[Support] Human-126094 - docker templates
🚀 v2.56.0 - A clearer benchmark page, and fixes from our first contributor registry.gitlab.com/misterjb/x265-butler:2.56.0 and :latest are up. amd64-only image on a Debian 13 (Trixie) base. Pull / upgrade (we recommend keeping the :latest tag): docker pull registry.gitlab.com/misterjb/x265-butler:latest docker restart x265-butler Setup guide (install, updates, GPU): https://gitlab.com/MisterJB/x265-butler/-/blob/main/docs/user/README.md NVIDIA, Intel or AMD GPU: setup and checks in the GPU guide: https://gitlab.com/MisterJB/x265-butler/-/blob/main/docs/user/gpu.md Full release notes: https://gitlab.com/MisterJB/x265-butler/-/releases/v2.56.0 🙏 THANK YOU, RAPIDMARK RapidMark (https://gitlab.com/RapidMark) is the first person to send issues and merge requests to x265-butler. Three of those reports are fixed in this release, each came with a clear analysis and a proposed fix. Thank you for the careful work! • Frame check works on HDR files again (#2): after an encode the app counts the video frames of the new file. On HDR output that count could not be read and the check was skipped silently. Because it now really runs, an HDR job can fail where it passed before; the original stays untouched. If a job failed wrongly, please post the job log here. Way out: set ENCODE_FRAME_GATE_DISABLED=1 and restart the container. • Finished jobs are sorted by when they finished (#3), not by when they were queued. • MP4 files with mov_text subtitles no longer fail with MKV output (#5): those subtitles are converted to SRT, everything else is copied as before. 📊 BENCHMARK PAGE • One progress card: "Measurement X of Y" with one bar for the whole run and the current combination. • Results appear without a reload, also after the second full check, and a running benchmark stays visible after a reload. • The top three cards and the history say what was set, what was measured and whether it saves space. • "Verify on full file" shows right away that the check starts, then its progress in the button; the page stays where it is, and a second start says "A full check is already running." instead of an error code. • On a phone the run history shows one card per run instead of a sideways scrolling table. • Ages and status are shown in the page language. 📱 SETTINGS ON A PHONE All settings tabs fit on a small screen without scrolling sideways, and inactive tabs are easier to read in the light theme. 🖥️ INTEL OR AMD GPU NEXT TO AN NVIDIA CARD With an NVIDIA card plus an Intel or AMD GPU, QuickSync and VAAPI are now checked on the second GPU. NVENC stays the default. We could not test this on such a host ourselves, so reports from two-GPU setups are welcome. 🧩 UNRAID TEMPLATE New installs find the two NVIDIA fields under Show more settings. Existing containers do not get template changes and nothing needs to change on a working install; the GPU guide shows how to add the fields to an older install. ♻️ ROLLBACK Only if v2.56.0 breaks something for you, and please report it here. Stop the container and back up your /config folder (AppData) first, then set the Repository field to registry.gitlab.com/misterjb/x265-butler:2.55.0. The previous version does not undo database changes of this one, so going back is not guaranteed to work; restore the backup if it misbehaves. Switch back to :latest once a fix is out.
-
[Support] Human-126094 - docker templates
Thanks @axelk for the report, and glad VAAPI is working well for you! You found a bug: once you've changed your library share, the wizard can no longer finish. The final step gets rejected, and the error you see is misleading. Nothing is wrong with your setup. Workaround, no wipe needed: open x265-butler in your browser, press F12, switch to the Console tab, paste this line and press Enter: fetch('/api/onboarding/complete', { method: 'POST' }).then(r => r.json()).then(console.log) You should see completed: true. Reload the page and the warning is gone. This only sets the "wizard done" flag and doesn't touch your shares or settings. Please don't run the wizard again to get rid of it: it would overwrite your current encoder and quality settings with the wizard's values. I'll fix this properly in the next release.
-
[Support] Human-126094 - docker templates
🚀 v2.56.0 - A clearer benchmark page, and fixes from our first contributor registry.gitlab.com/misterjb/x265-butler:2.56.0 and :latest are up. amd64-only image on a Debian 13 (Trixie) base. Pull / upgrade (we recommend keeping the :latest tag): docker pull registry.gitlab.com/misterjb/x265-butler:latest docker restart x265-butler Setup guide (install, updates, GPU): https://gitlab.com/MisterJB/x265-butler/-/blob/main/docs/user/README.md NVIDIA, Intel or AMD GPU: setup and checks in the GPU guide: https://gitlab.com/MisterJB/x265-butler/-/blob/main/docs/user/gpu.md Full release notes: https://gitlab.com/MisterJB/x265-butler/-/releases/v2.56.0 🙏 THANK YOU, RAPIDMARK RapidMark (https://gitlab.com/RapidMark) is the first person to send issues and merge requests to x265-butler. Three of those reports are fixed in this release, each came with a clear analysis and a proposed fix. Thank you for the careful work! • Frame check works on HDR files again (#2): after an encode the app counts the video frames of the new file. On HDR output that count could not be read and the check was skipped silently. Because it now really runs, an HDR job can fail where it passed before; the original stays untouched. If a job failed wrongly, please post the job log here. Way out: set ENCODE_FRAME_GATE_DISABLED=1 and restart the container. • Finished jobs are sorted by when they finished (#3), not by when they were queued. • MP4 files with mov_text subtitles no longer fail with MKV output (#5): those subtitles are converted to SRT, everything else is copied as before. 📊 BENCHMARK PAGE • One progress card: "Measurement X of Y" with one bar for the whole run and the current combination. • Results appear without a reload, also after the second full check, and a running benchmark stays visible after a reload. • The top three cards and the history say what was set, what was measured and whether it saves space. • "Verify on full file" shows right away that the check starts, then its progress in the button; the page stays where it is, and a second start says "A full check is already running." instead of an error code. • On a phone the run history shows one card per run instead of a sideways scrolling table. • Ages and status are shown in the page language. 📱 SETTINGS ON A PHONE All settings tabs fit on a small screen without scrolling sideways, and inactive tabs are easier to read in the light theme. 🖥️ INTEL OR AMD GPU NEXT TO AN NVIDIA CARD With an NVIDIA card plus an Intel or AMD GPU, QuickSync and VAAPI are now checked on the second GPU. NVENC stays the default. We could not test this on such a host ourselves, so reports from two-GPU setups are welcome. 🧩 UNRAID TEMPLATE New installs find the two NVIDIA fields under Show more settings. Existing containers do not get template changes and nothing needs to change on a working install; the GPU guide shows how to add the fields to an older install. ♻️ ROLLBACK Only if v2.56.0 breaks something for you, and please report it here. Stop the container and back up your /config folder (AppData) first, then set the Repository field to registry.gitlab.com/misterjb/x265-butler:2.55.0. The previous version does not undo database changes of this one, so going back is not guaranteed to work; restore the backup if it misbehaves. Switch back to :latest once a fix is out.
-
[Support] Human-126094 - docker templates
Hi @dhstsw , thanks for the diagnostics, they show the cause clearly: "Devices: nvidia=0" and nvidia-smi is missing inside the container. That means the NVIDIA runtime did not hand anything to the container. The image never ships nvidia-smi itself; the runtime injects it together with the GPU devices. The template does not set the NVIDIA variables by default, you have to add them yourself. Please check in the container settings (Advanced View): 1. Extra Parameters (not Post Arguments!): --runtime=nvidia 2. Add Variable: Key NVIDIA_VISIBLE_DEVICES, Value all (or your GPU UUID from "nvidia-smi -L" on the unRAID terminal) 3. Add Variable: Key NVIDIA_DRIVER_CAPABILITIES, Value compute,video,utility 4. Apply, then run on the unRAID tler nvidia-smi -L If that lists your GPU, open Diagnnvidia=1 and NVENC under detectedencoders. While you are at it, please update to 2.55.6. If it still shows nvidia=0, please post the output of: docker inspect x265-butler --format '{{.HostConfig.Runtime}} {{.Config Guide: https://gitlab.com/MisterJB/x265-butler/-/blob/main/docs/user/gpu.md
-
[Support] Human-126094 - docker templates
Hi @Unraid1105 , thanks for the report. I don't know the cause yet, but I have one idea worth checking first. Each browser tab of x265-butler keeps a live connection to the server for status updates. Because the app runs over plain HTTP, Chrome allows only a small number of connections to the same address at once. When you click through the app, a few tabs can be enough to reach that limit, and new pages then have to wait. That would explain the slow loading and the spinner that keeps going. If this turns out to be the cause, it is something I need to fix in the app, not something you did wrong. Could you try this? 1. Close every tab of x265-butler except one. 2. Reload that one tab. 3. Click through a few pages and tell me if they are fast now. If it is still slow with a single tab, please send me: 1. The version shown at the bottom left of the app. 2. Which pages are slow (all of them, or e.g. Dashboard, Library, Storage). 3. The report from Diagnostics, button Copy report. 4. Whether your array disks were spun down at the time. Some pages read free space and folders of your shares, which wakes sleeping disks and can take several seconds per disk. 5. If possible, a screenshot of Chrome's network tab: press F12, open the Network tab, reload the page and show which entry stays pending the longest. That will tell me exactly where the time goes.
-
[Support] Human-126094 - docker templates
Thanks @satom for the detailed report, that made it easy to track down. Your hardware and container setup are fine. This is a bug in x265-butler. When several GPUs are passed in, Butler checks only the first render node for VAAPI/QSV support. With --runtime=nvidia, the first node (renderD128) is the Quadro, so the check loads the NVIDIA VA driver, fails, and Butler never looks at the A310 on renderD129. NVENC detection works another way, so it still worked. On top of that, Butler hides the warning when NVENC works, so nothing pointed you to the cause. Choosing renderD129 in the GPU setting doesn't help yet either, because the detection check ignores that setting. Your vainfo test hits the same limit: without --device it also opens only the first node. To confirm the A310 is reachable with both GPUs attached, please run: docker exec x265-butler vainfo --display drm --device /dev/dri/renderD129 If it lists the iHD driver and thet confirms the A310 is reachable and the bug is on Butler's side. The fix is planned for the next release (2.56.0): - the VAAPI/QSV check runs on the chosen render node, - automatic selection skips NVIDIA nodes for VAAPI/QSV, so the A310 is used without extra settings, - a node you choose in Settings > Encoder also applies to detection, - the GPU guide gets a section on running NVIDIA and Intel/AMD side by side. I don't have a machine with two GPUs, so I can't test this setup myself. The fix will ship untested in the next release. Once 2.56.0 is out, please update and let me know whether the A310 shows up next to NVENC. If it doesn't, the diagnostics report from that version will help me find the cause quickly.
-
[Support] Human-126094 - docker templates
🚀 v2.55.0 - A user guide, and the app tells you what is wrong registry.gitlab.com/misterjb/x265-butler:2.55.0 and :latest are up. amd64-only image on a Debian 13 (Trixie) base. Pull / upgrade (we recommend keeping the :latest tag): docker pull registry.gitlab.com/misterjb/x265-butler:latest docker restart x265-butler Setup guide (install, updates, GPU): https://gitlab.com/MisterJB/x265-butler/-/blob/main/docs/user/README.md This one is mostly about helping you help yourself: a user guide, diagnostics that name what is missing, a warning banner that works again, and NVENC presets in the bench settings. It also contains v2.54.1, which shipped the guide quietly. 📖 NEW USER GUIDE Installation and updates, hardware encoding (NVENC, QuickSync, VAAPI, hosts with several GPUs), every setting, troubleshooting and an FAQ: https://gitlab.com/MisterJB/x265-butler/-/blob/main/docs/user/README.md 🏷️ IMAGE TAG: PLEASE KEEP :latest Older version tags are removed from the registry over time, fixes only ship in new releases, and unRAID shows update notices only for :latest. Use a version tag only as a short way back, with a /config backup first. 🔍 DIAGNOSTICS SAY WHEN NO GPU REACHED THE CONTAINER If the container has no /dev/dri render device or no NVIDIA devices, the Diagnostics page and the copied report now say so, name the missing parameter and link to the GPU guide. This was the cause behind the recent Arc A310 / Quadro P2000 report. ⚠️ THE WARNING BANNER WORKS AGAIN Since v2.18.0 the top banner silently dropped every real warning. It now shows one line per warning (for example "No full access to /media (EACCES)"), errors first, each can be hidden for 24 hours, and it stays out of the setup wizard. Don't want it: set NEXT_PUBLIC_DIAGNOSTICS_BANNER_DISABLED=1 and restart. 🎛️ BENCH SETTINGS KNOW THE NVENC PRESETS Settings, Bench only listed x265 presets and could not save p1 to p7. Now each chosen encoder gets its own presets, the first and last one say what they mean (p1 = fastest, lowest quality, p7 = slowest, best quality), saving needs one preset per encoder, and "Reset to defaults" on the benchmark page brings your NVENC presets back. Old saved defaults are not changed: if you had NVENC with only x265 presets, the bench settings mark the field until you pick one. 🟢 NVIDIA NVENC - HOST SETUP RECAP (applies to all versions) If you run an NVIDIA card, NVENC needs the host driver (unRAID NVIDIA-Driver-Plugin or nvidia-container-toolkit) plus these on the container: Extra Parameters: --runtime=nvidia Variables: NVIDIA_VISIBLE_DEVICES = all NVIDIA_DRIVER_CAPABILITIES = compute,video,utility The "video" capability is the one that bites you: the runtime default is compute,utility and WITHOUT video the NVENC session fails to init even though nvidia-smi works fine. utility = the detection probe, compute = CUDA filters, video = NVENC itself. Verify: docker exec x265-butler nvidia-smi -L → expect a "GPU 0: ..." line. ♻️ ROLLBACK Only if v2.55.0 breaks something for you, and please report it here. Stop the container and back up your /config folder (AppData) first, then set the Repository field to registry.gitlab.com/misterjb/x265-butler:2.54.1. The previous version does not undo database changes of this one, so going back is not guaranteed to work; restore the backup if it misbehaves. Switch back to :latest once a fix is out.
-
[Support] Human-126094 - docker templates
Hi @satom , thanks for the report, it shows the cause directly: the container doesn't see any GPU at all. - "DRI: none / No render devices found (no /dev/dri)": /dev/dri is not passed into the x265-butler container, so QSV and VAAPI can't be detected. - "NVIDIA: none / nvidia-smi not present": the NVIDIA runtime is not attached to this container. Jellyfin works because its template passes the GPU through; the x265-butler template needs the same. For QuickSync on the Arc A310: 1. Edit the container, add a Device: /dev/dri (or Extra Parameter: --device /dev/dri:/dev/dri) 2. Apply, then open Diagnostics and click "Re-run detection". The render devices should now be listed. 3. Your Xeon has no iGPU, so renderD128 is most likely the Quadro and renderD129 the Arc. By default the app uses the first render device, so go to Settings > Encoder > Render device and pick /dev/dri/renderD129. 4. Since NVENC ranks before QSV in "auto", set Settings > Encoder > Encoder to QSV if you want the Arc to be used. 5. If Diagnostics reports missing access to the device, set PGID to the group ID it names, or add --group-add <gid> as Extra Parameter. If you also want NVENC on the Quadro P2000 as an option: - Extra Parameters: --runtime=nvidia - Variables: NVIDIA_VISIBLE_DEVICES=all and NVIDIA_DRIVER_CAPABILITIES=compute,video,utility (the "video" capability is required, otherwise every NVENC encode fails) The P2000 is Pascal; the image ships a second ffmpeg build for older NVIDIA cards, nothing extra to configure. Unrelated, but worth fixing: the report shows "config-fallback" for the cache, meaning the temporary encode files land in appdata. Mapping a dedicated cache path is safer. Full guide: docs/user/gpu.md (section "More than one GPU" covers the device picker). If detection still fails after mapping /dev/dri, please post a new diagnostics report.
-
[Support] Human-126094 - docker templates
🚀 v2.54.0 - Skip HEVC on autopilot, now on GitLab ⚠️ ACTION NEEDED: THE IMAGE MOVED ⚠️ From this release on the image is published only at registry.gitlab.com. The old ghcr.io image stays at 2.53.0 and gets no more updates. On unRAID: Docker → x265-butler → Edit, change Repository to: registry.gitlab.com/misterjb/x265-butler:latest then Apply. Without this change your install stays on 2.53.0 and never shows an update. New installs from Community Applications already use the new address. ✨ AUTOMATIC ENCODING SKIPS HEVC AND AV1 New setting in Settings → General → Preferences: "Do not encode these codecs automatically". Default HEVC and AV1, also for existing installs. • Applies only when files are queued automatically. Those files show up as "Skipped (codec)" in the library. • Encode now and bulk encode still start any of them by hand. • Files with an unknown codec are never skipped. Already encoded files are untouched. • Unticking a codec puts its skipped files back in the queue. • Want the old behaviour? Untick all codecs. 🏠 NEW HOME ON GITLAB • Source, issues and merge requests: https://gitlab.com/MisterJB/x265-butler • Release notes for every version: https://gitlab.com/MisterJB/x265-butler/-/releases • The GitHub repository is archived and points there. • Help with setup stays here in this thread. 🟢 NVIDIA NVENC - HOST SETUP RECAP (applies to all versions) If you run an NVIDIA card, NVENC needs the host driver (unRAID NVIDIA-Driver-Plugin or nvidia-container-toolkit) plus these on the container: Extra Parameters: --runtime=nvidia Variables: NVIDIA_VISIBLE_DEVICES = all NVIDIA_DRIVER_CAPABILITIES = compute,video,utility The "video" capability is the one that bites you: the runtime default is compute,utility and WITHOUT video the NVENC session fails to init even though nvidia-smi works fine. utility = the detection probe, compute = CUDA filters, video = NVENC itself. Verify: docker exec x265-butler nvidia-smi -L → expect a "GPU 0: ..." line. ♻️ ROLLBACK If v2.54.0 misbehaves on your hardware, roll back to the previous image: docker stop x265-butler && docker rm x265-butler docker pull registry.gitlab.com/misterjb/x265-butler:2.53.0 On unRAID: set Repository to registry.gitlab.com/misterjb/x265-butler:2.53.0
-
[Support] Human-126094 - docker templates
🚀 v2.53.0 - Nothing hangs, nothing gets lost ghcr.io/masterjb/x265-butler:2.53.0 and :latest are up. amd64-only image on a Debian 13 (Trixie) base. Pull / upgrade: docker pull ghcr.io/masterjb/x265-butler:latest docker restart x265-butler Six GitHub issues fixed in one release (#16, #20, #17, #19, #18, #15). Every new behaviour can be switched off on its own. One time only: the restart INTO this update still runs the old code. An encode running at that moment ends as cancelled and has to be queued again by hand. ⏱️ STALLED ENCODES ARE STOPPED (#16) • No ffmpeg progress for 10 minutes: the job is stopped, marked failed (encode_stalled) and retried once at the front of the queue. • Setting "Stop stalled encodes after" (0 = off). Kill switch: ENCODE_STALL_DETECTION_DISABLED=1 🔁 RESTARTS NO LONGER LOSE WORK (#20) • Running jobs go back to the front of the queue after a crash or docker stop and start over. • A paused queue stays paused after a restart. • Setting "Resume encodes after a restart" (on by default). 📋 PROCESSING ORDER + BIG QUEUES (#17) • Queue page: Oldest first (default), Newest first, Largest file first, Smallest file first. • Jobs you drag by hand go first; "Clear manual order" removes that. • Dragging in queues with thousands of jobs no longer fails with HTTP 413. 🗑️ TRASH (#19) • Expired trash entries are now deleted WITH their files (before, only the database row went away). • HEADS-UP: the first purge after the update (within an hour) deletes every entry expired since install, with its file. Check "Keep originals in the trash for" (1 to 3650 days) before updating if you want more time. Kill switch: TRASH_PURGE_DISABLED=1 • The trash can be turned off ("Use the trash"). Off = originals are deleted or replaced for good after a successful encode. • New installs keep the trash inside the share (hidden folder .x265-butler-trash), existing installs keep their location and can switch in the settings. 🔎 BIG SCANS START SOONER (#18) • New files are queued while the scan is still running. • Files already encoded are recognised by size and date from their sidecar, without hashing (sidecars written by v2.53.0 and later). 🖥️ GPU DECODE FOR VAAPI, AMD/INTEL (#15) - PLEASE TEST • New switch in Settings, Encoding profile: "GPU decode for VAAPI (AMD/Intel)". OFF by default. • Only does something with the VAAPI encoder. NVIDIA (NVENC), Intel QSV and software encoding are not affected; no need to turn it on there. • Decodes H.264, HEVC, VP9, AV1, MPEG-2 and VC-1 on the GPU instead of the CPU. If the GPU cannot decode a source, ffmpeg falls back to the CPU and the job log says so. • NOT tested on real AMD or Intel hardware yet, I only have an NVIDIA card. If you encode with VAAPI, please turn it on and report back here: the "video decode:" and "ffmpeg argv:" lines from the job log, and CPU load with the switch off vs. on. • Problems? Switch it off and Retry the failed jobs. 🟢 NVIDIA NVENC - HOST SETUP RECAP (applies to all versions) If you run an NVIDIA card, NVENC needs the host driver (unRAID NVIDIA-Driver-Plugin or nvidia-container-toolkit) plus these on the container: Extra Parameters: --runtime=nvidia Variables: NVIDIA_VISIBLE_DEVICES = all NVIDIA_DRIVER_CAPABILITIES = compute,video,utility The "video" capability is the one that bites you: the runtime default is compute,utility and WITHOUT video the NVENC session fails to init even though nvidia-smi works fine. utility = the detection probe, compute = CUDA filters, video = NVENC itself. Verify: docker exec x265-butler nvidia-smi -L → expect a "GPU 0: ..." line. ♻️ ROLLBACK If v2.53.0 misbehaves on your hardware, roll back to the previous image: docker stop x265-butler && docker rm x265-butler docker pull ghcr.io/masterjb/x265-butler:2.52.0