Vora

Vora

Docker app from axufuris' Repository

Overview

Vora is a self-hosted media server for movies, TV, music, and IPTV with DVR, with cinematic clients for Android, Android TV, Fire TV, Roku, and the web. REQUIREMENTS: Vora needs a PostgreSQL database with the pgvector extension. Install the "pgvector" app from Community Applications FIRST (name its container "vora-postgres"), and put BOTH containers on the same user-defined Docker network (create one under Settings > Docker > Add network, e.g. "vora") so Vora can reach Postgres by container name. After both are running, browse to http://[SERVER-IP]:8080 and claim the server: the account you create there is the server admin. GPU (optional): for NVIDIA hardware transcoding, install the Nvidia-Driver plugin and set Extra Parameters to --runtime=nvidia.

Requirements

Requires a PostgreSQL server with the pgvector extension (install the pgvector app from Community Applications) on the same custom Docker network.

Related apps

Explore more like this

Explore all

Details

Repository
ghcr.io/axufuris/vora-media-server:latest
Last Updated2026-10-08
First Seen2026-10-08

Runtime arguments

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

Template configuration

WebUI PortPorttcp

Web UI / API port

Target
8080
Default
8080
Value
8080
App DataPathrw

Persistent data: config, artwork, plugins, logs, backups

Target
/app/data
Default
/mnt/user/appdata/vora
Value
/mnt/user/appdata/vora
TranscodePathrw

Transcoder scratch (HLS segments, IPTV timeshift); a fast local disk or cache pool is recommended

Target
/transcode
Default
/mnt/user/appdata/vora-transcode
Value
/mnt/user/appdata/vora-transcode
MoviesPathro

Movies library (read-only)

Target
/media/movies
Default
/mnt/user/media/movies
Value
/mnt/user/media/movies
ShowsPathro

TV shows library (read-only)

Target
/media/shows
Default
/mnt/user/media/shows
Value
/mnt/user/media/shows
MusicPathro

Music library (read-only)

Target
/media/music
Default
/mnt/user/media/music
Value
/mnt/user/media/music
Database ConnectionVariable

Npgsql connection string. Host = the Postgres container name on your custom network. Match the database, user and password set on the pgvector app.

Target
ConnectionStrings__DefaultConnection
Default
Host=vora-postgres;Port=5432;Database=vora;Username=vora;Password=CHANGEME
Value
Host=vora-postgres;Port=5432;Database=vora;Username=vora;Password=CHANGEME
JWT Secret KeyVariable

Long random string used to sign auth tokens. Generate once (e.g. openssl rand -base64 64) and keep it stable; changing it logs everyone out.

Target
Jwt__SecretKey
PUIDVariable

User id the container runs as (Unraid 'nobody' = 99)

Default
99
Value
99
PGIDVariable

Group id the container runs as (Unraid 'users' = 100)

Default
100
Value
100
TimezoneVariable

Container timezone (e.g. America/Chicago). Affects scheduled scans and tasks.

Target
TZ
Default
America/Chicago
Value
America/Chicago
Internal HTTP PortVariable

Internal listen port; leave at 8080

Target
ASPNETCORE_HTTP_PORTS
Default
8080
Value
8080
UMASKVariable

Permissions mask for files the app creates

Default
022
Value
022
Path: Custom ArtworkVariable

Internal path; keep under /app/data

Target
StoragePaths__CustomArtwork
Default
/app/data/custom_artwork
Value
/app/data/custom_artwork
Path: Artwork CacheVariable

Internal path; keep under /app/data

Target
StoragePaths__OriginalArtworkCache
Default
/app/data/original_artwork_cache
Value
/app/data/original_artwork_cache
Path: EPG CacheVariable

Internal path; keep under /app/data

Target
StoragePaths__EpgCache
Default
/app/data/iptv/epg_cache
Value
/app/data/iptv/epg_cache
Path: IPTV DVRVariable

Internal path; keep under /app/data

Target
StoragePaths__IptvDvr
Default
/app/data/iptv/dvr
Value
/app/data/iptv/dvr
Path: User ImagesVariable

Internal path; keep under /app/data

Target
StoragePaths__UserImages
Default
/app/data/users
Value
/app/data/users
Path: PluginsVariable

Internal path; keep under /app/data

Target
StoragePaths__Plugins
Default
/app/data/plugins
Value
/app/data/plugins
Path: SubtitlesVariable

Internal path; keep under /app/data

Target
StoragePaths__Subtitles
Default
/app/data/subtitles
Value
/app/data/subtitles
Path: LogsVariable

Internal path; keep under /app/data so it persists across container updates

Target
StoragePaths__Logs
Default
/app/data/logs
Value
/app/data/logs
Path: BackupsVariable

Internal path; keep under /app/data so it persists across container updates

Target
StoragePaths__Backups
Default
/app/data/backups
Value
/app/data/backups
Path: Data Protection KeysVariable

Internal path; keep under /app/data so it persists across container updates

Target
StoragePaths__DataProtection
Default
/app/data/dp-keys
Value
/app/data/dp-keys
Path: Video ThumbnailsVariable

Internal path; keep under /app/data so it persists across container updates

Target
StoragePaths__VideoThumbnails
Default
/app/data/video-thumbnails
Value
/app/data/video-thumbnails
Path: MetadataVariable

Internal path; keep under /app/data so it persists across container updates

Target
StoragePaths__Metadata
Default
/app/data/metadata
Value
/app/data/metadata
Path: Audio FingerprintsVariable

Internal path; keep under /app/data so it persists across container updates

Target
StoragePaths__AudioFingerprints
Default
/app/data/audio-fingerprints
Value
/app/data/audio-fingerprints
TMDB Metadata: api_keyVariable

TMDB v3 API key. themoviedb.org -> Settings -> API -> API Key (v3 auth).

Target
Vora__PluginSettings__tmdb_metadata__api_key
TMDB Metadata: is_enabledVariable

Enable this plugin (true/false). Blank = app default.

Target
Vora__PluginSettings__tmdb_metadata__is_enabled
TMDB Discovery: discovery_regionVariable

Discovery region code, e.g. US.

Target
Vora__PluginSettings__tmdb_discovery__discovery_region
TMDB Discovery: discovery_languageVariable

Discovery language, e.g. en-US.

Target
Vora__PluginSettings__tmdb_discovery__discovery_language
TMDB Discovery: is_enabledVariable

Enable this plugin (true/false). Blank = app default.

Target
Vora__PluginSettings__tmdb_discovery__is_enabled
TVDB Metadata: api_keyVariable

TVDB v4 API key. Register at thetvdb.com/api-information.

Target
Vora__PluginSettings__tvdb_metadata__api_key
TVDB Metadata: subscriber_pinVariable

Optional TVDB subscriber PIN.

Target
Vora__PluginSettings__tvdb_metadata__subscriber_pin
TVDB Metadata: is_enabledVariable

Enable this plugin (true/false). Blank = app default.

Target
Vora__PluginSettings__tvdb_metadata__is_enabled
OMDb Ratings: api_keyVariable

OMDb API key (omdbapi.com). Shared by all OMDb rating sources.

Target
Vora__PluginSettings__omdb_imdb__api_key
OMDb Ratings: is_enabledVariable

Enable this plugin (true/false). Blank = app default.

Target
Vora__PluginSettings__omdb_imdb__is_enabled
Fanart Artwork: api_keyVariable

Fanart.tv personal API key. Shared by the Fanart music artwork provider.

Target
Vora__PluginSettings__fanart_artwork__api_key
Fanart Artwork: is_enabledVariable

Enable this plugin (true/false). Blank = app default.

Target
Vora__PluginSettings__fanart_artwork__is_enabled
Last.fm: api_keyVariable

Last.fm API key.

Target
Vora__PluginSettings__lastfm_listening__api_key
Last.fm: api_secretVariable

Last.fm API secret.

Target
Vora__PluginSettings__lastfm_listening__api_secret
Last.fm: is_enabledVariable

Enable this plugin (true/false). Blank = app default.

Target
Vora__PluginSettings__lastfm_listening__is_enabled
Genius Lyrics: access_tokenVariable

Genius API access token.

Target
Vora__PluginSettings__genius_lyrics__access_token
Genius Lyrics: is_enabledVariable

Enable this plugin (true/false). Blank = app default.

Target
Vora__PluginSettings__genius_lyrics__is_enabled
OpenAI: api_keyVariable

OpenAI secret key (sk-...). platform.openai.com/api-keys; billing required.

Target
Vora__PluginSettings__openai_recommendations__api_key
OpenAI: chat_modelVariable

Recommendations model. Default gpt-4o-mini.

Target
Vora__PluginSettings__openai_recommendations__chat_model
OpenAI: collections_modelVariable

AI collections model. Default gpt-5.

Target
Vora__PluginSettings__openai_recommendations__collections_model
OpenAI: schedule_timeVariable

Nightly vector generation time, HH:mm. Default 02:00.

Target
Vora__PluginSettings__openai_recommendations__schedule_time
OpenAI: monthly_token_limitVariable

Monthly OpenAI token ceiling across all AI features. 0 = no limit.

Target
Vora__PluginSettings__openai_recommendations__monthly_token_limit
OpenAI: guardrailsVariable

Optional house rules appended to every AI request.

Target
Vora__PluginSettings__openai_recommendations__guardrails
OpenAI: is_enabledVariable

Enable this plugin (true/false). Blank = app default.

Target
Vora__PluginSettings__openai_recommendations__is_enabled
MDbList: api_keyVariable

MDbList API key (mdblist.com -> Preferences -> API). Reused by MDbList chronology.

Target
Vora__PluginSettings__mdblist_collection_sync__api_key
MDbList: is_enabledVariable

Enable this plugin (true/false). Blank = app default.

Target
Vora__PluginSettings__mdblist_collection_sync__is_enabled
OpenSubtitles: api_keyVariable

OpenSubtitles API key.

Target
Vora__PluginSettings__opensubtitles_search__api_key
OpenSubtitles: auth_modeVariable

Auth mode (see plugin options).

Target
Vora__PluginSettings__opensubtitles_search__auth_mode
OpenSubtitles: usernameVariable

OpenSubtitles username.

Target
Vora__PluginSettings__opensubtitles_search__username
OpenSubtitles: passwordVariable

OpenSubtitles password.

Target
Vora__PluginSettings__opensubtitles_search__password
OpenSubtitles: default_languagesVariable

Default subtitle languages, e.g. en.

Target
Vora__PluginSettings__opensubtitles_search__default_languages
OpenSubtitles: is_enabledVariable

Enable this plugin (true/false). Blank = app default.

Target
Vora__PluginSettings__opensubtitles_search__is_enabled
Poster Overlays: enable_scheduleVariable

Enable nightly overlay generation (true/false). Default false.

Target
Vora__PluginSettings__local_imagesharp_overlays__enable_schedule
Poster Overlays: schedule_timeVariable

Overlay generation time, HH:mm. Default 03:00.

Target
Vora__PluginSettings__local_imagesharp_overlays__schedule_time
Poster Overlays: is_enabledVariable

Enable this plugin (true/false). Blank = app default.

Target
Vora__PluginSettings__local_imagesharp_overlays__is_enabled