Matrix

Matrix

Docker app from junkerderprovinz's Repository

Overview

All-in-one Matrix homeserver for Unraid: Synapse, coturn, Element Web (/element/) and the Ketesa admin UI (/admin/). Fill in SERVER_NAME and the Postgres connection; everything else is generated automatically. Important, before the first start: set up the database and the proxy. 1) PostgreSQL database: connect to your Postgres container and run: CREATE USER matrix WITH PASSWORD 'yourpass'; CREATE DATABASE matrix ENCODING 'UTF8' LC_COLLATE='C' LC_CTYPE='C' TEMPLATE template0 OWNER matrix; UTF8 with LC_COLLATE='C' is required. Otherwise Synapse refuses to start, and a database created with the defaults has to be created again. 2) Reverse proxy (Nginx Proxy Manager) for matrix.yourdomain.tld → Unraid-IP:8008, with WebSockets on. In the proxy host → Advanced tab, add: client_max_body_size 100M; proxy_read_timeout 600s; proxy_send_timeout 600s; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; Without these, media uploads fail and syncing times out. Federation discovery needs nothing extra: Synapse serves /.well-known/matrix/server and /.well-known/matrix/client itself on port 8008, so the proxy host above covers them. Step by step, with screenshots: https://github.com/junkerderprovinz/matrix/blob/main/docs/setup.md Optional and off by default: delegated authentication via Matrix Authentication Service, which is what makes QR code device linking ("Link new device" in Element) possible. Leave the Delegated Auth field alone and the container behaves exactly as before. Enabling it needs a second empty Postgres database and a second reverse-proxy host with HTTPS, and it changes how your users sign in. Read the section "Delegated Auth and QR Code Login" in the setup guide first.

Matrix

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

A Docker image for running your own Matrix homeserver on Unraid. No manual config file editing and no SSH access to the container required. Enter your domain and database credentials and the container handles the rest.


[!IMPORTANT] Set up the database and the proxy before the first start. Synapse depends on two things outside the container. The PostgreSQL database has to use UTF8 with C collation, or Synapse refuses to start, and a database created with the defaults has to be created again. The reverse proxy needs a few extra Nginx settings, or media uploads fail and syncing times out.

Setting up PostgreSQL →    Reverse proxy settings →


Table of Contents

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

1. Download

Server

Install from Unraid's Community Applications   Install from the MOS Hub   Download the docker-compose file   Download the source archive


2. Support

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


3. What it looks like

The people, rooms and messages in these pictures are made up.

Element Web in a browser window, showing a room called Homelab with a conversation between four people
Element Web, served by the container itself, talking to your own Synapse

Ketesa in a browser window, listing the four users of the server
Ketesa, the admin page in the same image, for users, rooms and registration tokens


4. What it does

  • Everything a homeserver needs, in one image. It builds on Element's official Synapse image and adds Element Web, the Ketesa admin page, coturn for voice and video calls, and Prometheus metrics. Only PostgreSQL stays outside, so your backups and database stay yours.
  • Configured from the template. The container writes Synapse's config on every start from the fields you fill in, so a change is an edit in Unraid followed by a restart.
  • Federation without hand-written JSON. Synapse serves the .well-known delegation itself, and a reverse proxy in front of it is all federation needs. Switch it off and the server stays a private island.
  • A first admin without a console. Set ADMIN_USER and ADMIN_PASSWORD once and the account is created, or an existing one is promoted to server admin.
  • Optional extras, off by default. QR code login through the Matrix Authentication Service, media on S3 storage, and bridges loaded from /data/appservices/ are each one setting away.
  • Nothing ships blind. Every build boots against a throwaway PostgreSQL and fails if Synapse is not really running on it, and every image is scanned for CVEs.

5. Getting started

You need a PostgreSQL server and a reverse proxy with HTTPS (Nginx Proxy Manager, SWAG, Traefik or a Cloudflare Tunnel).

1. Create the database. Synapse refuses to start unless the database is UTF8 with C collation. In your Postgres console (psql -U postgres):

CREATE USER matrix WITH PASSWORD 'yoursecretpassword';
CREATE DATABASE matrix
    ENCODING 'UTF8' LC_COLLATE='C' LC_CTYPE='C'
    TEMPLATE template0 OWNER matrix;

2. Install the container. On Unraid, install Matrix from Community Applications and fill in SERVER_NAME (for example matrix.yourdomain.tld) and the POSTGRES_* fields. Use your server's IP for POSTGRES_HOST, since container names only resolve on a custom Docker network. SERVER_NAME becomes part of every user ID (@name:matrix.yourdomain.tld) and cannot be changed later without starting over. Anywhere else:

docker run -d --name matrix -p 8008:8008 -p 8080:8080 \
  -e SERVER_NAME=matrix.yourdomain.tld \
  -e POSTGRES_HOST=192.168.1.10 -e POSTGRES_USER=matrix \
  -e POSTGRES_PASSWORD=yoursecretpassword -e POSTGRES_DB=matrix \
  -e ADMIN_USER=admin -e ADMIN_PASSWORD=change-me \
  -v /path/to/data:/data \
  junkerderprovinz/matrix:latest

After 30 to 60 seconds the log shows MATRIX IS READY. Clear ADMIN_USER and ADMIN_PASSWORD once the admin exists.

3. Put the proxy in front. Point matrix.yourdomain.tld at port 8008 with WebSockets on, and add this to the proxy host's custom Nginx configuration (in Nginx Proxy Manager: Edit, Advanced), or media uploads fail and syncing times out:

client_max_body_size 100M;
proxy_read_timeout 600s;
proxy_send_timeout 600s;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

A path-based proxy has to forward all of /_matrix and /_synapse, or the admin page reports a server communication error. Then check federation with the federation tester.

4. Sign in. Element Web is on port 8080 under /element/ and Ketesa under /admin/. For voice and video calls, forward the TURN ports (3478 and the relay range 49160-49200/udp) to your server, since a reverse proxy cannot carry them, and set TURN_EXTERNAL_IP to your public IP when the server is behind NAT.

The database, the proxy, federation, monitoring, bridges, admin users, registration tokens, delegated auth, S3 media, Element Call for Element X, updates and troubleshooting are explained step by step in the setup guide.

Other Docker hosts

compose.yaml runs Matrix on any Linux server with Docker. Put it in a folder of its own, fill in every value marked required and start it with docker compose up -d. The folders are created next to the file.

  • Synology: in Container Manager, create a project from the file (DSM 7.2 or newer).
  • Proxmox: run it in a VM or an LXC container that has Docker.
  • MOS: install Matrix from the MOS Hub.

6. 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.


Questions? Check the support thread. Bugs, ideas or feature requests? Please open a GitHub issue.


Not affiliated with Element, the Matrix.org Foundation or the coturn project. Synapse, Element Web, Ketesa and coturn are used unmodified under their own licences; the packaging here is AGPL-3.0, see LICENSE.

Requirements

An external PostgreSQL database (UTF8, LC_COLLATE=C) and a reverse proxy (e.g. Nginx Proxy Manager) with large-upload and long-timeout settings. See the documentation for the exact setup: https://github.com/junkerderprovinz/matrix#readme

Download Statistics

14,523
Total Downloads

Related apps

Details

Repository
junkerderprovinz/matrix:latest
Last Updated2026-10-01
First Seen2026-06-09

Runtime arguments

Web UI
http://[IP]:[PORT:8080]/element/
Network
bridge
Shell
sh
Privileged
false

Template configuration

Matrix HTTP APIPorttcp

Synapse HTTP API. Expose it through a reverse proxy with HTTPS, not directly to the internet.

Target
8008
Default
8008
Value
8008
Element Web + Synapse-AdminPorttcp

Serves Element Web (/element/), Synapse-Admin (/admin/) and /.well-known/matrix/* endpoints.

Target
8080
Default
8080
Value
8080
TURN TCPPorttcp

TURN/STUN over TCP for voice/video calls. Open this port in your router/firewall.

Target
3478
Default
3478
Value
3478
TURN UDPPortudp

TURN/STUN over UDP for voice/video calls. Open this port in your router/firewall.

Target
3478
Default
3478
Value
3478
TURN TLS TCPPorttcp

TURN over TLS (TCP). Optional, only used when TLS certs are mounted.

Target
5349
Default
5349
Value
5349
TURN TLS UDPPortudp

TURN over TLS (UDP). Optional, only used when TLS certs are mounted.

Target
5349
Default
5349
Value
5349
TURN relay ports (UDP)Portudp

UDP relay port range for TURN (voice/video calls). Must match the container's coturn min-port/max-port.

Target
49160-49200
Default
49160-49200
Value
49160-49200
Prometheus MetricsPorttcp

Prometheus metrics at /_synapse/metrics. Bind to a private network only.

Target
9090
Default
9090
Value
9090
Auth Service (MAS)Porttcp

Matrix Authentication Service. Only listens when Delegated Auth is set to true. Needs its own reverse-proxy host (e.g. auth.yourdomain.tld) with a certificate.

Target
8090
Default
8090
Value
8090
Data DirectoryPath

Persistent data: homeserver.yaml, media, signing keys. Do not delete it: that destroys the keys and breaks federation.

Target
/data
Default
/mnt/user/appdata/matrix/
Value
/mnt/user/appdata/matrix/
TURN-TLS CertsPathro

Optional. Mount a folder containing fullchain.pem + privkey.pem to enable TURN-TLS on 5349.

Target
/data/certs
Matrix Server DomainVariable

Your Matrix domain, e.g. matrix.yourdomain.tld. Used in Matrix IDs (@user:matrix.yourdomain.tld). Cannot be changed later without wiping the DB.

Target
SERVER_NAME
Default
matrix.yourdomain.tld
Value
matrix.yourdomain.tld
Anonymous Usage ReportingVariable

Send anonymous usage stats to Matrix.org. 'yes' or 'no'. Recommended: no.

Target
REPORT_STATS
Default
no|yes
Value
no
Enable FederationVariable

true = chat with the public Matrix network. The container serves /.well-known/matrix/* itself (serve_server_wellknown) as long as https://SERVER_NAME/ is routed to Synapse, so no extra proxy rule is needed. false = private island.

Target
ENABLE_FEDERATION
Default
true|false
Value
true
Enable RegistrationVariable

false = accounts created by the admin only (recommended). true = open self-service signup without verification (shows Element's Create Account button). Only enable it behind a CAPTCHA or on a trusted network, or you will get spam signups.

Target
ENABLE_REGISTRATION
Default
false|true
Value
false
Delegated Auth (QR login)Variable

false = normal Synapse logins (default, unchanged). true = start Matrix Authentication Service and delegate authentication to it, which is what makes QR code device linking possible. Switching this on is a one-way trip for existing accounts: they stay in Synapse until you run 'mas-cli syn2mas migrate', and after that only a database restore gets you back. Read the README section 'Delegated auth' first. It also needs its own reverse-proxy host and breaks encrypted bridges.

Target
AUTH_ENABLED
Default
false|true
Value
false
Auth Public URLVariable

Required when Delegated Auth is true. Public https URL of the auth service, e.g. https://auth.yourdomain.tld/. Point a second reverse-proxy host at this container's port 8090. Must be https: the auth service rejects plain-http redirect URLs and Element's sign-in then fails.

Target
AUTH_PUBLIC_BASE
Auth Database NameVariable

Required when Delegated Auth is true. Name of a separate, empty PostgreSQL database for the auth service, which cannot share Synapse's. Create it with: CREATE DATABASE mas TEMPLATE template0 ENCODING 'UTF8' LC_COLLATE 'C' LC_CTYPE 'C';

Target
AUTH_POSTGRES_DB
Auth DB HostVariable

Optional. Leave empty to reuse the PostgreSQL host above.

Target
AUTH_POSTGRES_HOST
Auth DB UserVariable

Optional. Leave empty to reuse the PostgreSQL user above.

Target
AUTH_POSTGRES_USER
Auth DB PasswordVariable

Optional. Leave empty to reuse the PostgreSQL password above.

Target
AUTH_POSTGRES_PASSWORD
Auth: allow registrationVariable

Only relevant when Delegated Auth is true. Self-service signup through the auth service's own web UI. Registration through Synapse is impossible under delegated auth, so this replaces Enable Registration.

Target
AUTH_ALLOW_REGISTRATION
Default
false|true
Value
false
Auth: migrate accounts (ONE WAY)Variable

Only relevant when Delegated Auth is true, and only needed once. true = migrate your existing Synapse accounts into the auth service on the next start, before Synapse comes up. Back up your database first, because this cannot be undone once anyone has signed in afterwards. Users keep their sessions and are not signed out. It refuses to run if the pre-flight check fails, and it never runs twice. You can leave it on true afterwards, it is a no-op once done.

Target
AUTH_MIGRATE
Default
false|true
Value
false
Auth: QR code loginVariable

Only relevant when Delegated Auth is true. Enables MSC4108 so Element offers 'Link new device' with a QR code. Leave on unless you have a reason not to.

Target
AUTH_QR_LOGIN
Default
true|false
Value
true
S3 Media StorageVariable

false = media stored on this container's own volume only (default, unchanged). true = also copy every new upload to an S3-compatible bucket (e.g. SeaweedFS, Garage). The local copy stays as a hot cache. Existing media is not migrated retroactively. Read the README section 'S3 Media Storage' first.

Target
S3_MEDIA_ENABLED
Default
false|true
Value
false
S3 Media BucketVariable

Required when S3 Media Storage is true. Name of an S3 bucket that already exists on your backend.

Target
S3_MEDIA_BUCKET
S3 Media EndpointVariable

Required when S3 Media Storage is true. Your S3-compatible endpoint URL, e.g. http://192.168.20.73:8333 for a local SeaweedFS S3 gateway. There is no default, because this targets a self-hosted backend, not AWS.

Target
S3_MEDIA_ENDPOINT
S3 Media Access KeyVariable

Required when S3 Media Storage is true. Access key for the bucket above.

Target
S3_MEDIA_ACCESS_KEY_ID
S3 Media Secret KeyVariable

Required when S3 Media Storage is true. Secret key for the bucket above.

Target
S3_MEDIA_SECRET_ACCESS_KEY
S3 Media RegionVariable

Optional. Most self-hosted backends ignore this, but the S3 client library requires some value. Defaults to us-east-1 if left empty.

Target
S3_MEDIA_REGION
S3 Media Storage ClassVariable

Optional. Passed straight through to the bucket. Defaults to STANDARD if left empty.

Target
S3_MEDIA_STORAGE_CLASS
TURN DomainVariable

Optional. Public hostname clients reach TURN (voice/video) at. Leave empty to use SERVER_NAME; set a dedicated subdomain (e.g. turn.yourdomain.tld) to route TURN around a reverse proxy.

Target
TURN_DOMAIN
TURN PortVariable

Optional. Public TURN port advertised to clients (default 3478). Change only if you remapped the published TURN port.

Target
TURN_PORT
Default
3478
Value
3478
TURN External IPVariable

Your public IP, needed when the server sits behind a router with NAT (the usual home setup). Without it coturn hands out its private address as the relay address, and calls between networks fail even with the TURN ports forwarded. Leave it empty only if the server has a public IP of its own.

Target
TURN_EXTERNAL_IP
Element Call: LiveKit JWT service URLVariable

Optional. Element X places every call through Element Call, which needs a LiveKit server and the LiveKit JWT service running as two more containers. Enter the public https URL of the JWT service, e.g. https://livekit-jwt.yourdomain.tld, and the container sets up Synapse and Element Web for it. See 'Element Call' in the setup guide.

Target
ELEMENT_CALL_LIVEKIT_SERVICE_URL
PostgreSQL HostVariable

IP of your PostgreSQL server (e.g. Unraid host IP). 192.168.1.10 is a placeholder; replace it with your server's IP. An IP and port are more reliable than container names.

Target
POSTGRES_HOST
Default
192.168.1.10
Value
192.168.1.10
PostgreSQL PortVariable

PostgreSQL port. Default 5432.

Target
POSTGRES_PORT
Default
5432
Value
5432
PostgreSQL UsernameVariable

Postgres user for Synapse. Must already exist (see the Postgres setup in the README).

Target
POSTGRES_USER
Default
matrix
Value
matrix
PostgreSQL PasswordVariable

Password for the Postgres user above.

Target
POSTGRES_PASSWORD
PostgreSQL DatabaseVariable

Synapse database name. Must be created with ENCODING UTF8, LC_COLLATE='C', LC_CTYPE='C' (see Overview).

Target
POSTGRES_DB
Default
matrix
Value
matrix
Matrix Admin Username (Element / Synapse-Admin login)Variable

Optional. Localpart of the admin user to auto-create on first boot (e.g. 'admin' → @admin:SERVER_NAME). The account logs into Element Web and Synapse-Admin. Clear after creation.

Target
ADMIN_USER
Matrix Admin Password (Element / Synapse-Admin login)Variable

Optional. Password for the admin user above. Clear after first boot.

Target
ADMIN_PASSWORD
Element Web: extra featuresVariable

Optional. JSON object merged into the features block (labs flags) of Element Web's config.json, e.g. {"feature_html_topic": true}. A value that is not valid JSON is ignored with a warning in the log.

Target
ELEMENT_EXTRA_FEATURES
Default
{}
Value
{}
Element Web: extra configVariable

Optional. JSON object merged into Element Web's config.json, e.g. {"setting_defaults": {"language": "de_DE"}} to start new sessions in German. Element Web otherwise follows the browser language. A value that is not valid JSON is ignored with a warning in the log.

Target
ELEMENT_EXTRA_CONFIG
Default
{}
Value
{}
TimezoneVariable

Container timezone (affects log timestamps).

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

UID Synapse runs as. Default 99 (nobody on Unraid).

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

GID Synapse runs as. Default 100 (users on Unraid).

Target
PGID
Default
100
Value
100