selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

lunarr-go logo

Self-host lunarr-go

v0.11.0

Self-hosted media server for movies and TV shows

BetaOpen SourceApache-2.0
Updated9 hours ago
LanguageTypescript
Setup difficultyModerate
MobileNative app
ThemeDark mode
Stars
386
Port
3000 (HTTP server)
Docker
sayem314/lunarr
Install with Docker
Lunarr web UI preview showing media library browsing

What is lunarr-go?

This media server organizes personal movie and TV collections stored on local drives, SFTP, or WebDAV shares. It automatically fetches metadata from TMDb and streams content directly or transcodes to HLS on the fly. Playback works in the browser, via Chromecast, or AirPlay, with optional VAAPI hardware acceleration on Linux. Subtitles in .vtt or .srt format are detected and normalized to WebVTT. TheIntroDB integration provides skip markers for intros, recaps, and credits. An admin dashboard handles users, roles, library sharing, and job monitoring. Device pairing lets mobile and TV apps authenticate with a QR code, while guest links give temporary access without accounts. A REST API with OpenAPI documentation and a health endpoint support automation. The stack runs on Docker, Docker Compose, Arch (AUR), macOS (Homebrew), or from source with Bun. Data lives in a SQLite database.

Should you self-host lunarr-go?

lunarr-go scores 48/100 on selfhost.directory (how scoring works) and ranks #66 of 118 in Media Server. It has 386 GitHub stars.

It shipped 10 stable releases in the past year. The latest, v0.5.0, came out on 20 June 2026.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is Apache-2.0-licensed and written mostly in Typescript.

Its closest alternative on selfhost.directory is Jellyfin (88/100, 58 737 stars). It scores higher overall, so compare the two before you pick. See lunarr-go vs Jellyfin side by side.

Features

  • Admin Console
  • API keys and OpenAPI docs
  • Chromecast and AirPlay support
  • Device pairing
  • Direct play and HLS transcoding
  • Guest shares
  • Hardware acceleration (VAAPI)
  • Health endpoint
  • Intro/recap/credits skip
  • Local, SFTP, and WebDAV libraries
  • Person filmography pages
  • Scheduled metadata refresh
  • Search and browse hubs
  • Sidecar subtitles

lunarr-go README

How to install lunarr-go

Install lunarr-go with Docker

Docker Engine
Environment variables
AUTH_SECRET, ORIGIN

docker run -d
--name lunarr
--restart unless-stopped
-p 3000:3000
-e AUTH_SECRET=replace-with-a-random-secret-at-least-32-chars
-e ORIGIN=http://127.0.0.1:3000
-v lunarr-data:/data
-v /mnt/media:/media:ro
sayem314/lunarr:latest

The /mnt/media:/media:ro mount is optional for local media libraries. Replace /mnt/media with your host media path or remove that line if you only use remote libraries.

How to configure lunarr-go

  • AUTH_SECRETA stable secret used by authentication and server-side encryption helpers. Must be at least 32 characters and stay the same between restarts.

    A stable secret used by authentication and server-side encryption helpers. Must be at least 32 characters and stay the same between restarts.

    values: random string >=32 chars

  • FFMPEG_PATHOptional path to the FFmpeg executable used for HLS playback, runtime verification, and smoke tests.

    Optional path to the FFmpeg executable used for HLS playback, runtime verification, and smoke tests.

    values: filesystem path

  • FFMPEG_VAAPI_DEVICE/dev/dri/renderD128Optional VAAPI render device path for Linux hardware acceleration checks and VAAPI playback arguments.

    Optional VAAPI render device path for Linux hardware acceleration checks and VAAPI playback arguments.

    values: device path

  • HOST127.0.0.1The listen interface for the production server.

    The listen interface for the production server.

    values: IP address

  • LUNARR_DATA_DIR.lunarrPersistent app data directory. Stores SQLite database, auth-secret file, per-session HLS playlists, and shared HLS cache segments.

    Persistent app data directory. Stores SQLite database, auth-secret file, per-session HLS playlists, and shared HLS cache segments.

    values: filesystem path

  • LUNARR_DEVICE_PAIRING_API_KEY_EXPIRES_IN_DAYS730Optional paired device API key lifetime in days. Use 0 for no expiry.

    Optional paired device API key lifetime in days. Use 0 for no expiry.

    values: days

  • LUNARR_SIGNED_PLAYBACK_TOKEN_TTL_SECONDS28800Optional signed playback token lifetime for Cast, AirPlay, and native clients, in seconds.

    Optional signed playback token lifetime for Cast, AirPlay, and native clients, in seconds.

    values: seconds

  • LUNARR_WATCH_BINARY_INTERVAL_MS10000Binary polling interval in milliseconds for file watcher.

    Binary polling interval in milliseconds for file watcher.

    values: 1000-120000

  • LUNARR_WATCH_DEBOUNCE_MS5000Debounce time in milliseconds for file watcher.

    Debounce time in milliseconds for file watcher.

    values: 1000-300000

  • LUNARR_WATCH_INTERVAL_MS5000Polling interval in milliseconds for file watcher.

    Polling interval in milliseconds for file watcher.

    values: 1000-60000

  • LUNARR_WATCH_USE_POLLINGfalseEnable polling for remote/network mounts where native file events are unreliable.

    Enable polling for remote/network mounts where native file events are unreliable.

    values: true|false

  • LUNARR_WATCH_WRITE_STABILITY_MS10000Write stability time in milliseconds for file watcher.

    Write stability time in milliseconds for file watcher.

    values: 1000-300000

  • ORIGINhttp://127.0.0.1:5173The public URL where users access Lunarr. Must match the URL users open in the browser.

    The public URL where users access Lunarr. Must match the URL users open in the browser.

    values: URL string

  • PORT3000The TCP port for the production server.

    The TCP port for the production server.

    values: port number

lunarr-go releases & version history

More in Media Streaming

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…