Ray's subtitle server for NAS and home servers: dashboard, watch folders, Sonarr and Radarr.
2.1K
Ray's subtitle server for a NAS, home server or any always-on box: a web dashboard and a Developer API that make, translate, re-time and burn in subtitles on your own hardware (Ray Local) or on Ray's servers (Ray Cloud).
Movie.en.srt beside Movie.mkv) for Plex, Jellyfin and Emby - never replaces a subtitle it didn't makePUID, PGID and UMASK📖 Step-by-step NAS guide: https://github.com/techspecs/ray-headless/blob/main/docs/nas-install.md
📚 Full container guide: https://github.com/techspecs/ray-headless/blob/main/docs/docker.md
| Your hardware | Tag | Run with |
|---|---|---|
| NVIDIA graphics card (RTX 20-series / GTX 16-series and newer) | cuda | --gpus all (Linux with the NVIDIA Container Toolkit, or Windows with Docker Desktop) |
| A separate AMD graphics card, Linux host | vulkan | --device /dev/dri --device /dev/kfd |
| Integrated graphics (most NAS boxes), Intel graphics, no graphics card, or not sure | cpu | nothing special |
Everything also runs on the processor; a graphics card makes Ray Local faster. The cuda image needs --gpus all to start.
services:
ray-server:
image: techspecs/ray:cpu
container_name: ray-server
ports:
- "8787:8787"
environment:
PUID: "1000" # your user id (run `id` on the NAS)
PGID: "1000" # your group id
UMASK: "022"
volumes:
- ray-config:/config
- ray-models:/models
- ray-data:/data
- ./out:/out
- ./media:/media # your videos; add :ro to keep every subtitle in ./out
restart: unless-stopped
volumes:
ray-config:
ray-models:
ray-data:
docker compose up -d
docker compose logs ray-server # the owner key, the line starting with ray_
Then sign in, the first time only:
=====, the line that starts with ray_ (copy only from ray_ to the end of the line). It is shown only this once and stored hashed.http://SERVER-IP:8787/. The page says Set up this Ray server. Paste the key into Paste your API key. On a computer you share, untick Keep me signed in on this browser (under the button). Then choose Sign in.In step 3, Connect with your Ray app works too: you approve on Ray on your Windows PC or Mac (on Docker's default network, once RAY_NEARBY_LAN_SUBNETS is set). Rather approve on Ray than paste a key at all? Turn on Sign in with your Ray app in People (it's off until you do; Ray 4.0.16 or later).
Every step, and what to do when the key is lost: https://github.com/techspecs/ray-headless/blob/main/docs/docker.md#signing-in
The first job downloads what Ray needs (a few GB) into ray-models; after that jobs start right away.
docker run -d --name ray-server --restart unless-stopped \
-p 8787:8787 -e PUID=1000 -e PGID=1000 \
-v ray-config:/config -v ray-models:/models -v ray-data:/data \
-v "$PWD/out:/out" -v "$PWD/media:/media" \
techspecs/ray:cpu
For cuda add --gpus all; for vulkan add --device /dev/dri --device /dev/kfd (/dev/kfd lets Sunlight separate voices from the background sound). In Windows PowerShell, end each line with a backtick instead of \.
| Path | What it holds |
|---|---|
/config | Settings and the server's Ray account connection (this is your seat - keep it, and keep it private) |
/models | What Ray downloads to make subtitles (several GB) |
/data | Working data |
/out | Finished subtitles that aren't saved next to a video, named after the video |
Mount your media too (for example at /media) and use the path inside the container. Read-write lets Ray save subtitles next to your videos; :ro keeps every result in /out.
http://SERVER-IP:8787/v1/... with a key as a Bearer token.PUID:PGID (default 1000:1000) and gives /config, /models and /data to that user; results are named after the video; watch folders save next to the videos. Remove RAY_DISABLE_NEARBY_FANOUT if your container still has it.Details: https://github.com/techspecs/ray-headless/blob/main/docs/docker.md#upgrading-from-an-earlier-image
RAY_TELEMETRY=off turns it off.cpu, cuda, vulkan - the latest release of each image.<version>-cpu, <version>-cuda, <version>-vulkan - a fixed release you can pin.Site: https://rayplayer.com · Docs, CLI and issues: https://github.com/techspecs/ray-headless
Ray is proprietary software. © 2026 TechSpecs. All rights reserved.
Content type
Image
Digest
sha256:344812717…
Size
656 MB
Last updated
13 days ago
docker pull techspecs/ray:vulkan