Silo

Silo

Official

Docker app from SiloServerOrg's Repository

Overview

Silo is a self-hosted media server for your films and series. Point it at your media folders and stream to your devices - at home or away - with direct play, remuxing and hardware-accelerated transcoding handled automatically. A full-featured web client and admin interface ship with the server. An optional Jellyfin/Emby-compatible API lets you keep using clients you already own, such as Infuse, VidHub and Findroid. Household profiles give each member their own watch state and parental controls, and metadata is matched through installable plugins including TMDB and TVDB. IMPORTANT: Silo needs a PostgreSQL 18 database with the pgvector extension and Redis 6.2 or newer. Install the Silo-PostgreSQL template from this repository, then install any generic Redis container from Community Applications or use an existing Redis service. Set DATABASE_URL and REDIS_URL below to point at them. If you enable Unraid autostart, place Redis and Silo-PostgreSQL before Silo in Docker startup order and give PostgreSQL time to become ready; Silo stops when either dependency is unavailable. Hardware transcoding is optional. For Intel or AMD, add --device=/dev/dri:/dev/dri in Advanced View's Extra Parameters only when /dev/dri exists on the host. For NVIDIA, install the Unraid Nvidia-Driver plugin, add --runtime=nvidia in Advanced View's Extra Parameters, and enter your GPU UUID in the NVIDIA GPU UUID field. Silo's automatic hardware detection will select NVENC.

Silo — Unraid Community Applications templates

Official Unraid Community Applications templates for Silo, a self-hosted media server for films and series.

Templates

Template Image Purpose
templates/silo.xml ghcr.io/silo-server/silo-server The media server
templates/silo-postgres.xml pgvector/pgvector:pg18 PostgreSQL 18 + pgvector

Unraid's Community Applications installs one container per template — there is no Compose support. Silo's PostgreSQL dependency ships as a companion template because it requires PostgreSQL 18 with the pgvector extension. Redis does not require a Silo-specific image; install any Redis 6.2-or-newer container from Community Applications, or use an existing Redis service.

Install order

  1. Silo-PostgreSQL — start it, confirm it is healthy
  2. Redis 6.2+ — install a generic Redis container or use an existing Redis service
  3. Silo — set SECRET_KEY, DATABASE_URL and REDIS_URL, then start

Redis is required. Silo will not start until it can reach both PostgreSQL and Redis. A dedicated Redis instance is recommended, particularly if you run more than one Silo server.

If you enable Unraid autostart, keep Redis and Silo-PostgreSQL ahead of Silo in Docker startup order and configure a short wait after PostgreSQL. Silo exits when either dependency is still unavailable; start it again once both services are ready.

Choose a unique POSTGRES_PASSWORD when installing Silo-PostgreSQL; no password is supplied by the template. Use that same password in Silo's DATABASE_URL. If the password contains reserved URL characters, percent-encode them in the connection string. DATABASE_URL and REDIS_URL show as visible placeholders/examples in the Unraid form, not masked fields — replace them with your own values before starting the container. Because DATABASE_URL is unmasked, the database password appears in plaintext in the Unraid template/configuration.

Networking note

Containers on Unraid's default bridge network cannot resolve each other by name. The DATABASE_URL example and REDIS_URL default contain a literal YOUR-UNRAID-IP placeholder that must be replaced with the server's LAN IP address. Substituting the Compose-style hostnames (postgres, redis) will not work.

Users who prefer name resolution can create a custom Docker network and attach all three containers to it.

Media path

The template maps /mnt/user/data to the identical /mnt/user/data path inside Silo and mounts it read-only. Keep films and series beneath that root, then add the relevant subdirectories as libraries in Silo.

SECRET_KEY

Silo refuses to start without SECRET_KEY (see internal/config/bootstrap.go). Generate one from an Unraid terminal:

openssl rand -base64 48

Back it up separately from database dumps — losing it makes encrypted secrets unrecoverable.

Persistent data

The Silo container uses one appdata mapping: /mnt/user/appdata/silo on the host to /var/lib/silo in the container. It covers installed plugins, compatibility assets and other local Silo state. Back it up together with the separate Silo-PostgreSQL data directory and your SECRET_KEY.

Hardware transcoding

Hardware acceleration is optional; CPU-only hosts install without any GPU settings.

For Intel or AMD, if /dev/dri exists on the Unraid host, enable Advanced View and add --device=/dev/dri:/dev/dri to Extra Parameters. Do not add an empty Device entry: DockerMan renders that as the invalid argument --device=''. Device exposure has been smoke-tested on an AMD Hawk Point iGPU; a configured media library is still required to exercise an actual transcode.

For NVIDIA NVENC/NVDEC:

  1. Install the Nvidia-Driver plugin from Community Applications and reboot if prompted.
  2. Open the plugin settings and copy the desired GPU UUID.
  3. Edit the Silo container with Advanced View enabled and add --runtime=nvidia to Extra Parameters.
  4. Enter the UUID in NVIDIA GPU UUID (or use all). Leave NVIDIA_DRIVER_CAPABILITIES set to compute,video,utility.

Silo's default auto hardware-acceleration mode detects the exposed NVIDIA device and selects NVENC. The template does not force the NVIDIA runtime because doing so would prevent Silo from starting on hosts without the plugin/runtime installed.

Manual template installation

Copy the XML onto the Unraid flash drive to make the templates available from the Docker tab:

cp templates/*.xml /boot/config/plugins/dockerMan/templates-user/

License

The template XML and repository documentation are MIT licensed. The Silo name, logo, icons, and other brand assets are © 2026 Silo Media L.L.C. and are not included in the MIT license; see NOTICE.txt and TRADEMARK.md. Silo server source code is AGPL-3.0-or-later.

Install Silo on Unraid in a few clicks.

Find Silo in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for Silo Review the template variables and paths Click Install

Requirements

PostgreSQL 18 with the pgvector extension and Redis 6.2 or newer must be running before Silo will start. Install Silo-PostgreSQL from this repository and any generic Redis container from Community Applications, or use an existing Redis service. When using Unraid autostart, order both dependencies before Silo and give PostgreSQL time to become ready. A SECRET_KEY is also required - generate one with: openssl rand -base64 48

Related apps

Explore more like this

Explore all

Details

Repository
ghcr.io/silo-server/silo-server:latest
Last Updated2026-08-24
First Seen2026-08-24

Runtime arguments

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

Template configuration

WebUI PortPorttcp

Port for the Silo web interface and API.

Target
8080
Default
8090
Value
8090
Jellyfin-Compatible API PortPorttcp

Port for the optional Jellyfin/Emby-compatible API, used by clients such as Infuse, VidHub and Findroid. Disabled until an administrator enables it in admin settings. Change this if you already run Jellyfin on 8096.

Target
8096
Default
8096
Value
8096
Audiobookshelf-Compatible API PortPorttcp

Port for the optional Audiobookshelf-compatible API. Change this if you already run Audiobookshelf on 13378.

Target
13378
Default
13378
Value
13378
Media DataPathro

Root share containing your film and series libraries. The host and container paths are identical so paths remain consistent across your media stack. Mounted read-only - Silo never writes to your media.

Target
/mnt/user/data
Default
/mnt/user/data
Value
/mnt/user/data
AppdataPathrw

All persistent Silo application data, including installed plugins and compatibility assets. Back this directory up together with PostgreSQL and SECRET_KEY.

Target
/var/lib/silo
Default
/mnt/user/appdata/silo
Value
/mnt/user/appdata/silo
Transcode ScratchPathrw

Temporary transcode files. Defaults to /tmp, which is RAM on Unraid - this avoids unnecessary SSD wear. Point it at a cache-backed path instead if you have limited RAM.

Target
/tmp/silo-transcode
Default
/tmp/silo-transcode
Value
/tmp/silo-transcode
Host meminfoPathro

Read-only view of host memory, used to auto-tune database settings. Leave as-is.

Target
/host/proc/meminfo
Default
/proc/meminfo
Value
/proc/meminfo
MODEVariable

Deployment mode. Leave as 'integrated' for a normal single-server install.

Default
integrated
Value
integrated
SECRET_KEYVariable

REQUIRED. Master key for at-rest credential encryption - the server will not start without it. Generate one by opening an Unraid terminal and running: openssl rand -base64 48 -- Back this up separately from your database. If you lose it, encrypted secrets cannot be recovered.

DATABASE_URLVariable

REQUIRED. Connection string for Silo-PostgreSQL, for example: postgres://silo:YOUR-PASSWORD@YOUR-UNRAID-IP:5432/silo?sslmode=disable. The password must match POSTGRES_PASSWORD. Replace YOUR-UNRAID-IP with your Unraid server's LAN IP address and percent-encode reserved characters in the password.

REDIS_URLVariable

REQUIRED. Connection string for Redis 6.2 or newer. Install any generic Redis container from Community Applications or use an existing Redis service, then replace YOUR-UNRAID-IP with its reachable address.

Default
redis://YOUR-UNRAID-IP:6379
Value
redis://YOUR-UNRAID-IP:6379
SILO_PLUGIN_CACHE_DIRVariable

Where plugins are cached inside the container. Leave as-is.

Default
/var/lib/silo/plugins
Value
/var/lib/silo/plugins
POSTGRES_TUNEVariable

Automatically tune database connection settings based on available host memory.

Default
auto
Value
auto
NVIDIA GPU UUIDVariable

Optional NVIDIA hardware transcoding. Install the Unraid Nvidia-Driver plugin, copy a GPU UUID from its settings into this field (or use 'all'), and add --runtime=nvidia in Advanced View's Extra Parameters. Leave blank when NVIDIA is not used.

Target
NVIDIA_VISIBLE_DEVICES
NVIDIA Driver CapabilitiesVariable

NVIDIA runtime capabilities required for CUDA, NVENC/NVDEC and GPU diagnostics. Leave as-is when using NVIDIA; harmless when the NVIDIA GPU UUID is blank.

Target
NVIDIA_DRIVER_CAPABILITIES
Default
compute,video,utility
Value
compute,video,utility