HandBrake

HandBrake

Docker app from junkerderprovinz's Repository

Overview

The full HandBrake video transcoder GUI in your browser, running on a hardware-accelerated Selkies web desktop. It is dark by default and uses HandBrake's own native GTK dark mode rather than a repainted theme. Transcoding can run on NVIDIA, Intel and AMD GPUs. What's included: • HandBrake's complete GTK4 interface (ghb) plus HandBrakeCLI • GPU hardware encoding on NVIDIA (NVENC), Intel (Quick Sync) and AMD (VCE) via GPU_VENDOR (NVIDIA and Intel verified end to end on real hardware) • Automated watch-folder conversion: drop a video into /watch and the transcode lands in /output without opening the GUI • Up to 5 watch folders, directory exclusion, a daily active-hours window, configurable preset/format/extensions, keep-or-delete source • Web file manager (on by default), web terminal and desktop notifications, all reachable from the same browser tab • 5 conversion hooks for custom scripting, including one that fires for conversions started manually in the GUI, not just the watch folder • A configurable staging directory, so in-progress transcodes never touch the array until they are finished • Safe multi-instance operation: two containers can share one watch folder to convert twice as many files at once without ever converting the same file twice • Atomic output: conversions are staged and moved onto the output disk only after HandBrake reports success, so a media scanner never picks up a half-written file Notes: • WebUI opens via HTTPS on port 3001 (self-signed cert, accept it once). The Selkies web client requires a secure connection, so open the WebUI directly over HTTPS (3001) only. Port 3000 (HTTP) is for a reverse proxy that terminates TLS in front of the container. • GPU acceleration needs the matching passthrough: the NVIDIA Container Runtime for GPU_VENDOR=nvidia, or --device /dev/dri under Extra Parameters for intel/amd. Full per-vendor recipes are in the README's Hardware Encoding section. Leave GPU_VENDOR=none for software encoding. • PUID/PGID default to 99/100 (nobody/users on Unraid). • Auth: leave "WebUI Username" and "Password" empty to run without login. Set both to enable HTTP-basic auth on the WebUI, which is recommended whenever the container is reachable from anything beyond your LAN. Source on GitHub: https://github.com/junkerderprovinz/handbrake

HandBrake for Unraid

Build  Lint  Docker Pulls  Image Size  Arch  Selkies  Unraid  License: AGPL-3.0


A modern, plug-and-play Docker image for HandBrake on Unraid. The full transcoder GUI in your browser via Selkies, dark by default using HandBrake's own native GTK dark mode, plus a watch-folder converter that transcodes anything you drop into /watch without opening the UI at all. Everything is configurable from the Unraid template, no SSH or config-file editing required.

Install from Unraid's Community Applications   Run it with Docker   Download the source archive


A one-knight job: I build it, keep it running, work through the issues and add what people ask for, until nothing is missing. It is free, with no accounts, no telemetry, no ads and no paid tier. No asterisk anywhere. Nothing readable ever leaves your own walls. Forged on evenings and weekends, with heart and stubbornness.

If it has earned a place on your server or computer, toss a coin to your knight: it helps cover the costs and keeps the project alive. It also makes this knight's heart beat a little faster. Three ways below, whichever suits you.

Buy me a coffee   PayPal   Donate with crypto


Table of Contents

  1. What it looks like
  2. What it does
  3. How it compares
  4. Getting started
  5. How AI is used here
  6. Support this project

1. What it looks like

The videos in these pictures are the trailers of Blender's open movies Sintel and Big Buck Bunny (CC BY 3.0, Blender Foundation), loaded in a test container.

HandBrake in a browser window with the Sintel trailer loaded and a frame of it in the preview
HandBrake's own GTK dark mode, with a source loaded and the Fast 1080p30 preset picked

The HandBrake queue with one trailer encoding and a second one waiting
The queue works through one encode after another while you do something else


2. What it does

  • Selkies instead of noVNC. A hybrid VNC and H.264 stream for a smooth desktop, a real clipboard in both directions, and file upload and download from the browser.
  • Dark by default, with HandBrake's own GTK dark mode rather than a repaint. One variable switches to light.
  • Watch-folder conversion. Drop a file into /watch and the transcode lands in /output without opening the GUI. Output is written to a hidden file first and renamed when it is done, so a media scanner never picks up a half-written video. The watch folder
  • Hardware encoding with NVIDIA NVENC, and with Intel Quick Sync in a variant image. Hardware encoding
  • Hooks, a web file manager and a terminal, with the same variable names as jlesage/handbrake, so existing templates and hook scripts keep working. Hooks, Web desktop
  • Multi-arch: amd64 and arm64, both checked in CI by a smoke test that really transcodes a clip before anything is published.

3. How it compares

Another HandBrake container is also in Community Applications: linuxserver/handbrake, the official LinuxServer.io image. It builds on the very same Docker Baseimage Selkies project this image does, just the Arch Linux flavour of it instead of the Ubuntu one, and opts into that base's newer Wayland/PixelFlux screen-streaming pipeline (PIXELFLUX_WAYLAND=true) rather than the classic X11 one this image still uses by default. A strong, actively developed GUI, but no automated conversion of any kind, so it does not compete on the feature this image is built around.

This image jlesage/handbrake linuxserver/handbrake
Web stack Selkies (X11) noVNC Selkies (Wayland)
Base Ubuntu (glibc) Alpine (musl) Arch Linux
NVIDIA NVENC encoding ✅ ❌ (#49) n/a
Intel Quick Sync (QSV) encoding ✅ ⚠️ (#459) n/a
AMD VCE encoding ⚠️ unverified ❌ (#441) n/a
Dark mode default ✅ opt-in (DARK_MODE=1) ❓
Watch-folder conversion ✅ ✅ ❌
Browser clipboard ✅ ⚠️ ✅
File upload via WebUI ✅ ❌ ✅
Web file manager ✅ opt-in (WEB_FILE_MANAGER=1) ❌
Conversion hooks ✅ ✅ ❌
Staging on a separate disk ✅ ❌ n/a
Shared-watch-folder locking ✅ ✅ n/a
CJK fonts ✅ opt-in (ENABLE_CJK_FONT=1) ❓
Multi-arch ✅ ✅ ❌ amd64 only
Direct VNC client ❌ ✅ ❌

✅ works · ❌ doesn't · ⚠️ present but limited · ❓ undocumented · n/a no automated conversion to accelerate/configure


4. Getting started

On Unraid, install HandBrake from Community Applications and set the paths for your media, the watch folder and the output folder. Everything else has a working default.

Without Unraid:

docker run -d --name handbrake \
  -p 3001:3001 \
  -e PUID=99 -e PGID=100 \
  -v /path/to/appdata/handbrake:/config \
  -v /path/to/media:/storage:ro \
  -v /path/to/watch:/watch \
  -v /path/to/converted:/output \
  junkerderprovinz/handbrake:latest

Then open https://<server-ip>:3001/ and accept the self-signed certificate once. On the very first start, wait for HANDBRAKE IS READY in the container log.

Every variable, the watch-folder settings, hardware encoding, hooks, optical drives, moving over from jlesage/handbrake and the known problems are in docs/configuration.md.


5. How AI is used here

One knight builds this, and AI is one of the tools I work with, the same way I work with an editor or a compiler. It helps me write code and documentation and it checks my work, and that saves me a good many evenings. It does not make the decisions, though. I read and understand everything before it ships, and if something here breaks, that is on me and not on the tool.

You do not have to take my word for it. The code is open and every release note is written by hand. The issue tracker shows how problems actually get handled, including the ones I got wrong the first time. If you find something that is not right, open an issue and I will look at it.


6. Support this project

Questions, bugs, ideas or feature requests? Please open a GitHub issue.

A one-knight job: I build it, keep it running, work through the issues and add what people ask for, until nothing is missing. It is free, with no accounts, no telemetry, no ads and no paid tier. No asterisk anywhere. Nothing readable ever leaves your own walls. Forged on evenings and weekends, with heart and stubbornness.

If it has earned a place on your server or computer, toss a coin to your knight: it helps cover the costs and keeps the project alive. It also makes this knight's heart beat a little faster. Three ways below, whichever suits you.

Buy me a coffee   PayPal   Donate with crypto


This wrapper is AGPL-3.0-only. HandBrake itself is GPL-2.0 and its artwork is CC BY-SA 4.0. Every bundled component and its licence is listed in NOTICE.

Download Statistics

8,120
Total Downloads

Related apps

Details

Repository
junkerderprovinz/handbrake:latest
Last Updated2026-09-15
First Seen2026-08-16

Runtime arguments

Web UI
https://[IP]:[PORT:3001]/
Network
bridge
Shell
bash
Privileged
false
Extra Params
--restart=unless-stopped --shm-size=1gb

Template configuration

WebUI Port (HTTPS / Selkies)Porttcp

HTTPS port of the Selkies WebUI (self-signed cert). This is the default WebUI, because the browser only allows clipboard access over HTTPS. Accept the self-signed certificate once.

Target
3001
Default
3001
Value
3001
WebUI Port (HTTP / Selkies)Porttcp

HTTP port of the Selkies WebUI. For a reverse proxy that terminates TLS in front of the container, not for direct browser access: the Selkies web client requires a secure context, so opening http://IP:3000 directly shows a 'requires a secure connection (HTTPS)' error. For direct access use the HTTPS port 3001.

Target
3000
Default
3000
Value
3000
AppData (/config)Pathrw

Persistent HandBrake presets, queue, logs, container state, watch-folder bookkeeping and conversion hooks (/config/hooks).

Target
/config
Default
/mnt/user/appdata/handbrake
Value
/mnt/user/appdata/handbrake
Storage (/storage)Pathro

Media you want to browse from inside the GUI (read-only).

Target
/storage
Default
/mnt/user
Value
/mnt/user
Watch Folder (/watch)Pathrw

Anything dropped here is converted automatically.

Target
/watch
Default
/mnt/user/media/watch
Value
/mnt/user/media/watch
Output Folder (/output)Pathrw

Where converted files are written.

Target
/output
Default
/mnt/user/media/converted
Value
/mnt/user/media/converted
Watch Folder 2 (/watch2)Pathrw

Optional additional watch folder.

Target
/watch2
Watch Folder 3 (/watch3)Pathrw

Optional additional watch folder.

Target
/watch3
Watch Folder 4 (/watch4)Pathrw

Optional additional watch folder.

Target
/watch4
Watch Folder 5 (/watch5)Pathrw

Optional additional watch folder.

Target
/watch5
Staging Folder (/staging)Pathrw

Optional. Map this to a fast disk (e.g. a cache pool) and set 'Staging Directory' below to /staging to keep in-progress conversions off the array while they run.

Target
/staging
Theme (HANDBRAKE_THEME)Variable

HandBrake's own native GTK dark mode. 'dark' (default) or 'light'.

Target
HANDBRAKE_THEME
Default
dark|light
Value
dark
Keyboard Layout (KEYBOARD_LAYOUT)Variable

X keyboard layout loaded at session start (setxkbmap). Binds Shift so pasted upper-case text keeps its case in the web desktop, and gives the correct symbols for your layout. Default 'us' suits most users.

Target
KEYBOARD_LAYOUT
Default
us|de|gb|fr|es|it|pt|nl|se|no|dk|fi|pl|cz|hu|ru|jp
Value
us
GPU Vendor (GPU_VENDOR)Variable

Hardware encoding vendor for every automated watch-folder conversion. 'nvidia' needs the NVIDIA Container Runtime (Extra Parameters: --runtime=nvidia) plus NVIDIA_DRIVER_CAPABILITIES=compute,video,utility. 'intel' and 'amd' need the GPU device passed through (Extra Parameters: --device /dev/dri). NVIDIA and Intel are verified on real hardware; AMD is wired but unverified (no AMD GPU to test on). A vendor that cannot be honoured logs exactly why and falls back to software encoding. Check the reason with: docker exec handbrake cat /config/handbrake-gpu.log

Target
GPU_VENDOR
Default
none|nvidia|intel|amd
Value
none
App Niceness (APP_NICENESS)Variable

nice level (0-19) applied to the GUI and every transcode. Higher = lower priority, leaves more CPU for other containers.

Target
APP_NICENESS
Default
0
Value
0
Automated Conversion (AUTOMATED_CONVERSION)Variable

1 = watch-folder conversion enabled (default), 0 = disable the daemon entirely.

Target
AUTOMATED_CONVERSION
Default
1|0
Value
1
Conversion Preset (AUTOMATED_CONVERSION_PRESET)Variable

HandBrake preset used for every automated conversion, as 'category/name'.

Target
AUTOMATED_CONVERSION_PRESET
Default
General/Very Fast 1080p30
Value
General/Very Fast 1080p30
Output Format (AUTOMATED_CONVERSION_FORMAT)Variable

Output container for automated conversions.

Target
AUTOMATED_CONVERSION_FORMAT
Default
mp4|mkv|webm
Value
mp4
Output Subdirectory (AUTOMATED_CONVERSION_OUTPUT_SUBDIR)Variable

Optional. A fixed subfolder under the output folder, or SAME_AS_SRC to mirror the source's own subfolder structure.

Target
AUTOMATED_CONVERSION_OUTPUT_SUBDIR
Keep Source (AUTOMATED_CONVERSION_KEEP_SOURCE)Variable

1 = keep the original file after conversion (default), 0 = delete it after a successful conversion.

Target
AUTOMATED_CONVERSION_KEEP_SOURCE
Default
1|0
Value
1
Overwrite Output (AUTOMATED_CONVERSION_OVERWRITE_OUTPUT)Variable

0 = skip a file if the output already exists (default), 1 = overwrite it.

Target
AUTOMATED_CONVERSION_OVERWRITE_OUTPUT
Default
0|1
Value
0
Video Extensions (AUTOMATED_CONVERSION_VIDEO_FILE_EXTENSIONS)Variable

Optional. Comma-separated list of file extensions to treat as video. Empty uses the built-in default list (mkv, mp4, avi, mov, wmv, and more).

Target
AUTOMATED_CONVERSION_VIDEO_FILE_EXTENSIONS
Ignore Directories (AUTOMATED_CONVERSION_IGNORE_DIRECTORIES)Variable

Optional. Space-separated directory names (e.g. sync-client metadata folders) pruned from every watch-folder scan, matched anywhere in the tree.

Target
AUTOMATED_CONVERSION_IGNORE_DIRECTORIES
Active Hours (AUTOMATED_CONVERSION_ACTIVE_HOURS)Variable

Optional. Restrict automated conversion to a daily window, HH-HH in 24h clock (e.g. 22-06 for overnight only). Empty means always active. Uses the container's TZ.

Target
AUTOMATED_CONVERSION_ACTIVE_HOURS
Staging Directory (AUTOMATED_CONVERSION_STAGING_DIR)Variable

Optional. Where in-progress conversions are written. Empty means a hidden folder under the output root. Set to /staging (map that path above to a cache pool) to keep the array out of the write path during a transcode.

Target
AUTOMATED_CONVERSION_STAGING_DIR
Source Stable Time (AUTOMATED_CONVERSION_SOURCE_STABLE_TIME)Variable

Seconds a source file must stop changing (size + mtime) before it is picked up, so a file still being copied in is never touched.

Target
AUTOMATED_CONVERSION_SOURCE_STABLE_TIME
Default
5
Value
5
Check Interval (AUTOMATED_CONVERSION_CHECK_INTERVAL)Variable

Seconds between watch-folder scans.

Target
AUTOMATED_CONVERSION_CHECK_INTERVAL
Default
5
Value
5
Max Watch Folders (AUTOMATED_CONVERSION_MAX_WATCH_FOLDERS)Variable

How many numbered watch folders (/watch..N) to scan when the watch directory is left at AUTO.

Target
AUTOMATED_CONVERSION_MAX_WATCH_FOLDERS
Default
5
Value
5
Custom HandBrakeCLI Args (AUTOMATED_CONVERSION_HANDBRAKE_CUSTOM_ARGS)Variable

Optional. Extra HandBrakeCLI arguments appended to every automated job, e.g. --encoder nvenc_h265 for HEVC instead of H.264.

Target
AUTOMATED_CONVERSION_HANDBRAKE_CUSTOM_ARGS
Web File Manager (WEB_FILE_MANAGER)Variable

1 = browse, upload and download the watch/output/storage folders at https://host:3001/files/ (default). 0 disables the endpoint entirely.

Target
WEB_FILE_MANAGER
Default
1|0
Value
1
File Manager Allowed Paths (WEB_FILE_MANAGER_ALLOWED_PATHS)Variable

AUTO publishes the watch folders, the output folder and /storage, whichever exist. Otherwise a comma-separated list of absolute paths. /config is always refused, since it holds the WebUI's TLS private key.

Target
WEB_FILE_MANAGER_ALLOWED_PATHS
Default
AUTO
Value
AUTO
File Manager Denied Paths (WEB_FILE_MANAGER_DENIED_PATHS)Variable

Optional. Comma-separated paths inside the allowed ones that must answer 403 instead of being browsable.

Target
WEB_FILE_MANAGER_DENIED_PATHS
Web Terminal (WEB_TERMINAL)Variable

1 enables a terminal on the web desktop with Ctrl+Alt+T. 0 (default) disables every terminal program in the container.

Target
WEB_TERMINAL
Default
0|1
Value
0
Web Terminal Shell (WEB_TERMINAL_SHELL_PATH)Variable

The shell the web terminal opens.

Target
WEB_TERMINAL_SHELL_PATH
Default
/bin/bash
Value
/bin/bash
Desktop Notifications (WEB_NOTIFICATION)Variable

1 shows a popup on the web desktop when a conversion finishes or fails. 0 (default) is off.

Target
WEB_NOTIFICATION
Default
0|1
Value
0
Optical Drive Permissions (ATTACHED_DEVICES_PERMS)Variable

Device glob the container is granted group access to for optical-drive ripping, e.g. /dev/sr*. Also pass the device itself under Extra Parameters, e.g. --device /dev/sr0. Unverified: no optical drive was available to test a rip end to end.

Target
ATTACHED_DEVICES_PERMS
Default
/dev/sr*
Value
/dev/sr*
Build libdvdcss for encrypted DVDs (INSTALL_LIBDVDCSS)Variable

false (default) leaves the container as it is: a commercially encrypted DVD ends at 'No Title Found' because no decryption library is present. true makes the container download the libdvdcss source from VideoLAN's own mirror on its first start, check it against a pinned checksum and compile it here. The library is never shipped inside the image. The first start with it takes about 15 seconds and needs internet; the result is cached under /config so later starts take about a second. Whether decrypting a disc you own is lawful depends on where you live, which is why this is off by default.

Target
INSTALL_LIBDVDCSS
Default
false|true
Value
false
WebUI UsernameVariable

Optional. Username for HTTP-basic-auth on the WebUI. Leave it empty together with the password for no login. Set both fields to enable login (recommended outside trusted LANs).

Target
CUSTOM_USER
WebUI PasswordVariable

Optional. Password for HTTP-basic-auth on the WebUI. Leave it empty together with the username for no login. Strongly recommended whenever the container is reachable from outside your LAN.

Target
PASSWORD
Timezone (TZ)Variable

Container timezone (affects log timestamps and file mtimes). Use this instead of a /etc/localtime bind-mount, because the LSIO base image manages /etc/localtime internally via TZ.

Target
TZ
Default
Europe/Vienna|Africa/Abidjan|Africa/Accra|Africa/Addis_Ababa|Africa/Algiers|Africa/Asmera|Africa/Bamako|Africa/Bangui|Africa/Banjul|Africa/Bissau|Africa/Blantyre|Africa/Brazzaville|Africa/Bujumbura|Africa/Cairo|Africa/Casablanca|Africa/Ceuta|Africa/Conakry|Africa/Dakar|Africa/Dar_es_Salaam|Africa/Djibouti|Africa/Douala|Africa/El_Aaiun|Africa/Freetown|Africa/Gaborone|Africa/Harare|Africa/Johannesburg|Africa/Juba|Africa/Kampala|Africa/Khartoum|Africa/Kigali|Africa/Kinshasa|Africa/Lagos|Africa/Libreville|Africa/Lome|Africa/Luanda|Africa/Lubumbashi|Africa/Lusaka|Africa/Malabo|Africa/Maputo|Africa/Maseru|Africa/Mbabane|Africa/Mogadishu|Africa/Monrovia|Africa/Nairobi|Africa/Ndjamena|Africa/Niamey|Africa/Nouakchott|Africa/Ouagadougou|Africa/Porto-Novo|Africa/Sao_Tome|Africa/Tripoli|Africa/Tunis|Africa/Windhoek|America/Adak|America/Anchorage|America/Anguilla|America/Antigua|America/Araguaina|America/Argentina/La_Rioja|America/Argentina/Rio_Gallegos|America/Argentina/Salta|America/Argentina/San_Juan|America/Argentina/San_Luis|America/Argentina/Tucuman|America/Argentina/Ushuaia|America/Aruba|America/Asuncion|America/Bahia|America/Bahia_Banderas|America/Barbados|America/Belem|America/Belize|America/Blanc-Sablon|America/Boa_Vista|America/Bogota|America/Boise|America/Buenos_Aires|America/Cambridge_Bay|America/Campo_Grande|America/Cancun|America/Caracas|America/Catamarca|America/Cayenne|America/Cayman|America/Chicago|America/Chihuahua|America/Ciudad_Juarez|America/Coral_Harbour|America/Cordoba|America/Costa_Rica|America/Coyhaique|America/Creston|America/Cuiaba|America/Curacao|America/Danmarkshavn|America/Dawson|America/Dawson_Creek|America/Denver|America/Detroit|America/Dominica|America/Edmonton|America/Eirunepe|America/El_Salvador|America/Fort_Nelson|America/Fortaleza|America/Glace_Bay|America/Godthab|America/Goose_Bay|America/Grand_Turk|America/Grenada|America/Guadeloupe|America/Guatemala|America/Guayaquil|America/Guyana|America/Halifax|America/Havana|America/Hermosillo|America/Indiana/Knox|America/Indiana/Marengo|America/Indiana/Petersburg|America/Indiana/Tell_City|America/Indiana/Vevay|America/Indiana/Vincennes|America/Indiana/Winamac|America/Indianapolis|America/Inuvik|America/Iqaluit|America/Jamaica|America/Jujuy|America/Juneau|America/Kentucky/Monticello|America/Kralendijk|America/La_Paz|America/Lima|America/Los_Angeles|America/Louisville|America/Lower_Princes|America/Maceio|America/Managua|America/Manaus|America/Marigot|America/Martinique|America/Matamoros|America/Mazatlan|America/Mendoza|America/Menominee|America/Merida|America/Metlakatla|America/Mexico_City|America/Miquelon|America/Moncton|America/Monterrey|America/Montevideo|America/Montserrat|America/Nassau|America/New_York|America/Nome|America/Noronha|America/North_Dakota/Beulah|America/North_Dakota/Center|America/North_Dakota/New_Salem|America/Ojinaga|America/Panama|America/Paramaribo|America/Phoenix|America/Port-au-Prince|America/Port_of_Spain|America/Porto_Velho|America/Puerto_Rico|America/Punta_Arenas|America/Rankin_Inlet|America/Recife|America/Regina|America/Resolute|America/Rio_Branco|America/Santarem|America/Santiago|America/Santo_Domingo|America/Sao_Paulo|America/Scoresbysund|America/Sitka|America/St_Barthelemy|America/St_Johns|America/St_Kitts|America/St_Lucia|America/St_Thomas|America/St_Vincent|America/Swift_Current|America/Tegucigalpa|America/Thule|America/Tijuana|America/Toronto|America/Tortola|America/Vancouver|America/Whitehorse|America/Winnipeg|America/Yakutat|Antarctica/Casey|Antarctica/Davis|Antarctica/DumontDUrville|Antarctica/Macquarie|Antarctica/Mawson|Antarctica/McMurdo|Antarctica/Palmer|Antarctica/Rothera|Antarctica/Syowa|Antarctica/Troll|Antarctica/Vostok|Arctic/Longyearbyen|Asia/Aden|Asia/Almaty|Asia/Amman|Asia/Anadyr|Asia/Aqtau|Asia/Aqtobe|Asia/Ashgabat|Asia/Atyrau|Asia/Baghdad|Asia/Bahrain|Asia/Baku|Asia/Bangkok|Asia/Barnaul|Asia/Beirut|Asia/Bishkek|Asia/Brunei|Asia/Calcutta|Asia/Chita|Asia/Colombo|Asia/Damascus|Asia/Dhaka|Asia/Dili|Asia/Dubai|Asia/Dushanbe|Asia/Famagusta|Asia/Gaza|Asia/Hebron|Asia/Hong_Kong|Asia/Hovd|Asia/Irkutsk|Asia/Jakarta|Asia/Jayapura|Asia/Jerusalem|Asia/Kabul|Asia/Kamchatka|Asia/Karachi|Asia/Katmandu|Asia/Khandyga|Asia/Krasnoyarsk|Asia/Kuala_Lumpur|Asia/Kuching|Asia/Kuwait|Asia/Macau|Asia/Magadan|Asia/Makassar|Asia/Manila|Asia/Muscat|Asia/Nicosia|Asia/Novokuznetsk|Asia/Novosibirsk|Asia/Omsk|Asia/Oral|Asia/Phnom_Penh|Asia/Pontianak|Asia/Pyongyang|Asia/Qatar|Asia/Qostanay|Asia/Qyzylorda|Asia/Rangoon|Asia/Riyadh|Asia/Saigon|Asia/Sakhalin|Asia/Samarkand|Asia/Seoul|Asia/Shanghai|Asia/Singapore|Asia/Srednekolymsk|Asia/Taipei|Asia/Tashkent|Asia/Tbilisi|Asia/Tehran|Asia/Thimphu|Asia/Tokyo|Asia/Tomsk|Asia/Ulaanbaatar|Asia/Urumqi|Asia/Ust-Nera|Asia/Vientiane|Asia/Vladivostok|Asia/Yakutsk|Asia/Yekaterinburg|Asia/Yerevan|Atlantic/Azores|Atlantic/Bermuda|Atlantic/Canary|Atlantic/Cape_Verde|Atlantic/Faeroe|Atlantic/Madeira|Atlantic/Reykjavik|Atlantic/South_Georgia|Atlantic/St_Helena|Atlantic/Stanley|Australia/Adelaide|Australia/Brisbane|Australia/Broken_Hill|Australia/Darwin|Australia/Eucla|Australia/Hobart|Australia/Lindeman|Australia/Lord_Howe|Australia/Melbourne|Australia/Perth|Australia/Sydney|Europe/Amsterdam|Europe/Andorra|Europe/Astrakhan|Europe/Athens|Europe/Belgrade|Europe/Berlin|Europe/Bratislava|Europe/Brussels|Europe/Bucharest|Europe/Budapest|Europe/Busingen|Europe/Chisinau|Europe/Copenhagen|Europe/Dublin|Europe/Gibraltar|Europe/Guernsey|Europe/Helsinki|Europe/Isle_of_Man|Europe/Istanbul|Europe/Jersey|Europe/Kaliningrad|Europe/Kiev|Europe/Kirov|Europe/Lisbon|Europe/Ljubljana|Europe/London|Europe/Luxembourg|Europe/Madrid|Europe/Malta|Europe/Mariehamn|Europe/Minsk|Europe/Monaco|Europe/Moscow|Europe/Oslo|Europe/Paris|Europe/Podgorica|Europe/Prague|Europe/Riga|Europe/Rome|Europe/Samara|Europe/San_Marino|Europe/Sarajevo|Europe/Saratov|Europe/Simferopol|Europe/Skopje|Europe/Sofia|Europe/Stockholm|Europe/Tallinn|Europe/Tirane|Europe/Ulyanovsk|Europe/Vaduz|Europe/Vatican|Europe/Vilnius|Europe/Volgograd|Europe/Warsaw|Europe/Zagreb|Europe/Zurich|Indian/Antananarivo|Indian/Chagos|Indian/Christmas|Indian/Cocos|Indian/Comoro|Indian/Kerguelen|Indian/Mahe|Indian/Maldives|Indian/Mauritius|Indian/Mayotte|Indian/Reunion|Pacific/Apia|Pacific/Auckland|Pacific/Bougainville|Pacific/Chatham|Pacific/Easter|Pacific/Efate|Pacific/Enderbury|Pacific/Fakaofo|Pacific/Fiji|Pacific/Funafuti|Pacific/Galapagos|Pacific/Gambier|Pacific/Guadalcanal|Pacific/Guam|Pacific/Honolulu|Pacific/Kiritimati|Pacific/Kosrae|Pacific/Kwajalein|Pacific/Majuro|Pacific/Marquesas|Pacific/Midway|Pacific/Nauru|Pacific/Niue|Pacific/Norfolk|Pacific/Noumea|Pacific/Pago_Pago|Pacific/Palau|Pacific/Pitcairn|Pacific/Ponape|Pacific/Port_Moresby|Pacific/Rarotonga|Pacific/Saipan|Pacific/Tahiti|Pacific/Tarawa|Pacific/Tongatapu|Pacific/Truk|Pacific/Wake|Pacific/Wallis
Value
Europe/Vienna
User ID (PUID)Variable

User-ID HandBrake runs as. Default 99 (nobody on Unraid).

Target
PUID
Default
99
Value
99
Group ID (PGID)Variable

Group-ID. Default 100 (users on Unraid).

Target
PGID
Default
100
Value
100
UMASKVariable

Permission mask for newly created files. The default 000 lets every container user read and write them, which is what you want when other containers touch the same shares. Set 022 or 077 for stricter permissions.

Default
000|022|002|077
Value
000