Emby is an exceptional media / theater application that enables you to collect all your movies, videos, music, audio books, games and photos together into one place. With Emby it’s pretty simple to configure a personal media server at home capable to automatically converting and streaming your media on-the-fl, which can be played on any device. Emby comes with decent parental control restrictions suitable for home use with children having access, you can create users, create access schedules, time limits, and more.
In this tutorial we shall perform the installation, explore required configurations and the general usage of Emby Media Server running inside a container. The advantage of running Emby in a Docker container is there is no dependency on specific Linux OS, it’s only Docker Engine and boom!. Emby Server is built on top of popular open source technologies such as jQuery, Service Stack, jQuery mobile, and .NET Core.
Install Docker Engine
Check out our article that covers the installation of Docker Engine on Linux systems.
Installed version of Docker can be checked via the command line.
$ docker version
Client: Docker Engine - Community
Version: 25.0.3
API version: 1.44
Go version: go1.21.6
Git commit: 4debf41
Built: Tue Feb 6 21:13:09 2024
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 25.0.3
API version: 1.44 (minimum version 1.24)
Go version: go1.21.6
Git commit: f417435
Built: Tue Feb 6 21:13:09 2024
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.28
GitCommit: ae07eda36dd25f8a1b98dfbf587313b99c0190bb
runc:
Version: 1.1.12
GitCommit: v1.1.12-0-g51d5e94
docker-init:
Version: 0.19.0
GitCommit: de40ad0
Create Docker Compose file
Compose is used to simplify the control of containers running on your host machine. Is simplifies the management of networks, services, and volumes in a single YAML configuration file. With a single docker compose
or docker-compose
command, you create, start, stop, or delete all the services defined in the YAML configuration file.
Let’s create a configuration file for running Emby Media Server.
mkdir ~/emby && cd ~/emby
vim docker-compose.yml
Modify the contents below and paste in the file.
services:
emby:
image: emby/embyserver
container_name: embyserver
network_mode: host # Enable DLNA and Wake-on-Lan
environment:
- UID=1000 # The UID to run emby as (default: 2)
- GID=100 # The GID to run emby as (default 2)
- GIDLIST=100 # A comma-separated list of additional GIDs to run emby as (default: 2)
volumes:
- ./data:/config # Configuration directory
- /path/to/tvshows:/mnt/share1 # Media directory
- /path/to/movies:/mnt/share2 # Media directory
ports:
- 8096:8096 # HTTP port
- 8920:8920 # HTTPS port
restart: on-failure
Where;
- UID, GID and GIDLIST values match the owner of your media files
- /path/to/tvshows is the path to your TV shows
- /path/to/movies is the path to your local movies
Running ls -l <directory>
will show the user and group information of your media directories and render nodes.
To print UID and GID use getent passwd <user> | cut -d: -f3
and getent group <group> | cut -d: -f3
respectively.
To start Emby server run the commands below.
$ docker compose up -d
[+] Running 5/5
✔ emby 4 layers [⣿⣿⣿⣿] 0B/0B Pulled 15.6s
✔ 8dfc70c9a1cf Pull complete 0.4s
✔ dfdf7ff41865 Pull complete 3.0s
✔ 2e11cacd3fbe Pull complete 1.6s
✔ 9bfa438fee60 Pull complete 1.1s
[+] Running 0/1
⠋ Container embyserver Creating
[+] Running 2/2
✔ Container embyserver Started
Check container status
$ docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
embyserver emby/embyserver "/init" emby 50 seconds ago Up 49 seconds
The ports that Emby server will listen on.
# ss -tunelp | grep -i EmbyServer
udp UNCONN 0 0 127.0.0.1:55124 0.0.0.0:* users:(("EmbyServer",pid=3803,fd=246)) uid:1000 ino:34141 sk:1 cgroup:/system.slice/docker-fdc36525965470ea8ac04103ffaa3494148add08893f4a637b87410b93399349.scope <->
udp UNCONN 0 0 0.0.0.0:1900 0.0.0.0:* users:(("EmbyServer",pid=3803,fd=243)) uid:1000 ino:34138 sk:2 cgroup:/system.slice/docker-fdc36525965470ea8ac04103ffaa3494148add08893f4a637b87410b93399349.scope <->
udp UNCONN 0 0 0.0.0.0:44936 0.0.0.0:* users:(("EmbyServer",pid=3803,fd=244)) uid:1000 ino:34139 sk:3 cgroup:/system.slice/docker-fdc36525965470ea8ac04103ffaa3494148add08893f4a637b87410b93399349.scope <->
udp UNCONN 0 0 49.13.153.179:57349 0.0.0.0:* users:(("EmbyServer",pid=3803,fd=245)) uid:1000 ino:34140 sk:4 cgroup:/system.slice/docker-fdc36525965470ea8ac04103ffaa3494148add08893f4a637b87410b93399349.scope <->
udp UNCONN 0 0 *:7359 *:* users:(("EmbyServer",pid=3803,fd=239)) uid:1000 ino:34137 sk:7 cgroup:/system.slice/docker-fdc36525965470ea8ac04103ffaa3494148add08893f4a637b87410b93399349.scope v6only:0 <->
tcp LISTEN 0 512 *:8096 *:* users:(("EmbyServer",pid=3803,fd=208)) uid:1000 ino:34121 sk:a cgroup:/system.slice/docker-fdc36525965470ea8ac04103ffaa3494148add08893f4a637b87410b93399349.scope v6only:0 <->
Access Emby Media Server Web interface
After starting the container successfully, you can access the web interface on port 8096 or 8920 on the IP of your docker host – http://ServerIP:8096

Create the first user account which will have administrative privileges.

You can add media directories at this point or do it later on the web dashboard.

Enable automatic port mapping for remote access.

Agree to the terms of service.

Once done with the configurations hit the “Finish” button.

Click on “Manual Login” to proceed with login.

Login with the username and password assigned at the point of creating user.

Here is the look after login. Use Star icon to access admin dashboard.

The admin dashboard has a look similar to the one shown below.

Media Libraries can be added under Settings –> Library

Wrapping Up
The process of setting up Emby server is straightforward, with only a few simple steps. This solution makes it easy for anyone to have a personal media server in seconds. Visit the official Emby Community Forum to read more.
Similar articles:
- How To Install Jellyfin Media Server on Ubuntu or Debian
- How To Run Plex Media Server in Docker Containers
- Install Plex Media Server on Ubuntu