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

Emby Media Server 01

Create the first user account which will have administrative privileges.

Emby Media Server 02

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

Emby Media Server 03

Enable automatic port mapping for remote access.

Emby Media Server 04

Agree to the terms of service.

Emby Media Server 05

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

Emby Media Server 06

Click on “Manual Login” to proceed with login.

Emby Media Server 07

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

Emby Media Server 08

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

Emby Media Server 09

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

Emby Media Server 10

Media Libraries can be added under Settings –> Library

Emby Media Server 11

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:

LEAVE A REPLY

Please enter your comment!
Please enter your name here