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
Method 1: Docker Compose (Recommended)
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
- Open Dashboard → Transcoding
- Set Hardware acceleration to Intel QuickSync Video (or NVENC/VAAPI)
- Enable the codecs you want to accelerate (H.264, H.265, VP9)
- 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
embyuser to therenderandvideogroups:sudo usermod -aG render,video emby sudo systemctl restart emby-server
Method 5: Windows Installation
- Download the Windows installer from emby.media/downloads
- Run the
.exeEmby installs as a Windows Service - 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 type | Example 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
| Plan | Price |
|---|---|
| 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
| Task | Why |
|---|---|
| Activate Emby Premiere | Unlock hardware transcoding and mobile apps |
| Enable hardware transcoding | Smooth 4K, low CPU |
| Set up a reverse proxy (Caddy) | HTTPS for remote access |
| Configure user accounts | Control library access per user |
| Install Trakt plugin | Sync watch history externally |
| Install OpenSubtitles plugin | Automatic subtitle downloads |
| Set up automated backups | Protect your config |
| Install EmbyWatch on Android | Monitor 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
./configfolder before upgrading.
Troubleshooting
| Problem | Fix |
|---|---|
| Cannot access port 8096 | Check firewall: sudo ufw allow 8096/tcp |
| Hardware transcoding not working | Verify /dev/dri is mapped, Premiere is active, and group permissions are correct |
| Library scan stuck | Check file permissions Emby user must be able to read media |
| Metadata wrong | Use Identify to manually match TMDB/TVDB ID |
| Mobile app limited | Emby Premiere required for full mobile access |
| High CPU during playback | Enable 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