How to Install an Emby Server in 2026: The Complete Step-by-Step Guide (Docker, Linux, Windows)

How to Install an Emby Server in 2026: The Complete Step-by-Step Guide (Docker, Linux, Windows)

How to Install an Emby Server in 2026: Complete Guide

Emby is a powerful self-hosted media server with a polished interface, strong client support, and a mature feature set. This guide covers the complete installation process in 2026 from Docker Compose to hardware transcoding and remote access.


What You Need Before Starting

  • A machine running Ubuntu 22.04 / Debian 12 (or Windows 10/11)
  • Docker Engine and Docker Compose plugin installed
  • At least 4 GB RAM, a 64-bit CPU
  • Your media files on the host (e.g., /mnt/media)
  • An Emby Premiere license for hardware transcoding and full mobile access (optional for basic setup)

Install Docker (Linux)

curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker

Docker is the cleanest way to run Emby easy updates, isolated environment, and consistent behavior across any Linux host.

Project structure

~/emby/
  docker-compose.yml
  config/     ← Emby config & metadata (use SSD)
  cache/      ← Transcoding temp files
mkdir -p ~/emby && cd ~/emby

docker-compose.yml

services:
  emby:
    image: emby/embyserver:latest
    container_name: emby
    environment:
      - UID=1000
      - GID=1000
      - GIDLIST=1000
    volumes:
      - ./config:/config
      - /mnt/media:/media:ro
    ports:
      - "8096:8096"
      - "8920:8920"
    restart: unless-stopped

Port 8096 is HTTP, port 8920 is HTTPS (with a self-signed certificate). For production, use a reverse proxy instead of exposing 8920 directly.

Start Emby

docker compose up -d

Open http://YOUR_SERVER_IP:8096 to complete the setup wizard.


Method 2: Docker Compose with Hardware Transcoding

Hardware transcoding requires Emby Premiere. Once activated, it dramatically reduces CPU load during playback.

Intel Quick Sync (QSV)

For Intel CPUs with integrated graphics (N100, i3/i5/i7 12th gen+):

# Verify the render device exists
ls /dev/dri
# Expected: card0  renderD128
services:
  emby:
    image: emby/embyserver:latest
    container_name: emby
    environment:
      - UID=1000
      - GID=1000
      - GIDLIST=1000,109  # 109 = render group
    volumes:
      - ./config:/config
      - /mnt/media:/media:ro
    devices:
      - /dev/dri/renderD128:/dev/dri/renderD128
    ports:
      - "8096:8096"
    restart: unless-stopped

Check the render group ID on your system: getent group render | cut -d: -f3

NVIDIA NVENC

For NVIDIA GPUs:

services:
  emby:
    image: emby/embyserver:latest
    container_name: emby
    runtime: nvidia
    environment:
      - UID=1000
      - GID=1000
      - NVIDIA_VISIBLE_DEVICES=all
      - NVIDIA_DRIVER_CAPABILITIES=compute,video,utility
    volumes:
      - ./config:/config
      - /mnt/media:/media:ro
    ports:
      - "8096:8096"
    restart: unless-stopped

Enable hardware transcoding in Emby

  1. Open Dashboard → Transcoding
  2. Set Hardware acceleration to Intel QuickSync Video (or NVENC/VAAPI)
  3. Enable the codecs you want to accelerate (H.264, H.265, VP9)
  4. Save

Emby Premiere is required to use hardware transcoding. Activate it from Dashboard → Emby Premiere → enter your license key.


Method 3: Full Stack with Caddy Reverse Proxy

For HTTPS remote access with automatic SSL certificates:

services:
  caddy:
    image: caddy:2-alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data
    restart: unless-stopped

  emby:
    image: emby/embyserver:latest
    container_name: emby
    environment:
      - UID=1000
      - GID=1000
    volumes:
      - ./config:/config
      - /mnt/media:/media:ro
    devices:
      - /dev/dri/renderD128:/dev/dri/renderD128
    restart: unless-stopped

volumes:
  caddy_data:

Caddyfile:

emby.yourdomain.com {
    reverse_proxy emby:8096
}

Point your domain DNS A record to your server IP, then:

docker compose up -d

Caddy handles SSL automatically via Let's Encrypt.


Method 4: Native Linux Installation (APT)

For a bare-metal installation without Docker:

# Download the latest .deb package from emby.media/downloads
wget https://github.com/MediaBrowser/Emby.Releases/releases/latest/download/emby-server-deb_amd64.deb

# Install
sudo dpkg -i emby-server-deb_amd64.deb

# Enable and start
sudo systemctl enable --now emby-server

# Check status
sudo systemctl status emby-server

Access at http://localhost:8096.

For hardware transcoding on bare metal, add the emby user to the render and video groups:

sudo usermod -aG render,video emby
sudo systemctl restart emby-server

Method 5: Windows Installation

JellyWatchTry JellyWatch — Your Jellyfin companion, everywhere.
  1. Download the Windows installer from emby.media/downloads
  2. Run the .exe Emby installs as a Windows Service
  3. Access at http://localhost:8096

For hardware transcoding on Windows, select DXVA2 or D3D11VA in the transcoding settings (requires Emby Premiere).


First-Run Setup Wizard

Open http://YOUR_IP:8096 and follow the wizard:

1. Create your admin account

Choose a strong username and password.

2. Add your media libraries

Click Add Media Library for each content type:

Content typeExample path
Movies/media/movies
TV Shows/media/tv
Music/media/music
Photos/media/photos

File naming is critical for correct metadata matching:

/media/movies/
  Inception (2010)/
    Inception (2010).mkv

/media/tv/
  The Office/
    Season 01/
      The Office - S01E01.mkv

3. Configure metadata providers

Emby uses TMDB for movies and TVDB for TV shows by default. Set your preferred metadata language in Dashboard → Libraries → [Library] → Metadata language.

4. Activate Emby Premiere (optional)

Dashboard → Emby Premiere → enter your license key.

Premiere unlocks:

  • Hardware transcoding
  • Full mobile app access
  • Live TV and DVR
  • Offline sync
  • Backup and restore

Emby Premiere Pricing in 2026

PlanPrice
Monthly~$4.99 / month
Yearly~$54 / year
Lifetime~$119 one-time

For long-term self-hosters, the lifetime plan is the best value it pays for itself in under 2 years.


Post-Installation Checklist

TaskWhy
Activate Emby PremiereUnlock hardware transcoding and mobile apps
Enable hardware transcodingSmooth 4K, low CPU
Set up a reverse proxy (Caddy)HTTPS for remote access
Configure user accountsControl library access per user
Install Trakt pluginSync watch history externally
Install OpenSubtitles pluginAutomatic subtitle downloads
Set up automated backupsProtect your config
Install EmbyWatch on AndroidMonitor from your phone

Updating Emby

Docker

docker compose pull
docker compose up -d

APT

sudo apt update && sudo apt upgrade emby-server

Always back up your ./config folder before upgrading.


Troubleshooting

ProblemFix
Cannot access port 8096Check firewall: sudo ufw allow 8096/tcp
Hardware transcoding not workingVerify /dev/dri is mapped, Premiere is active, and group permissions are correct
Library scan stuckCheck file permissions Emby user must be able to read media
Metadata wrongUse Identify to manually match TMDB/TVDB ID
Mobile app limitedEmby Premiere required for full mobile access
High CPU during playbackEnable hardware transcoding (requires Premiere)

Monitor Your Emby Server

Once your server is running, you need real-time visibility into active streams, CPU load, and transcoding sessions.

EmbyWatch is the dedicated Android admin app for Emby:

  • Real-time session monitoring
  • Transcoding diagnostics
  • CPU, RAM, and storage alerts
  • Push notifications for new sessions and server events
  • Radarr, Sonarr, and Seerr integration
  • Android home screen widget

Your Emby server is live now keep it under control. Download EmbyWatch on Google Play the essential Android companion for every Emby admin.

Also running Jellyfin? Download JellyWatch on Google Play the same monitoring experience built for Jellyfin.

Comments

No comments yet. Be the first to share your thoughts.

Leave a comment

Never displayed publicly.
0 / 2000 · Supports limited Markdown: **bold**, *italic*, `code`, [link](url), lists, > quote.