-
Notifications
You must be signed in to change notification settings - Fork 93
Docker Getting Started
- Introduction
- Getting started
- Maintenance
- unRAID
- Technical Information
- Manual Run and Installation
- Migrating your data from an existing installation
- License
Emby Server is a home media server built on top of other popular open source technologies such as Service Stack, jQuery, jQuery mobile, and Mono.
It features a REST-based API with built-in documention to facilitate client development. We also have client libraries for our API to enable rapid development.
This subfolder contains all necessary files to build a Docker image for embyserver.
- latest - latest stable release
- beta - latest beta release
- dev - latest dev release
- armv7 - latest stable release for armv7 or armhf
- aarch64 - latest stable release for armv8 or aarch64
Before reporting your issue please try updating Docker to the latest version and check if it resolves the issue. Refer to the Docker installation guide for instructions.
SELinux users should try disabling SELinux using the command setenforce 0
to see if it resolves the issue.
If the above recommendations do not help then report your issue along with the following information:
- Output of the
docker version
anddocker info
commands - The
docker run
command ordocker-compose.yml
used to start the image. Mask out the sensitive bits. - Please state if you are using Boot2Docker, VirtualBox, etc.
It is recommended you install directly from the Docker Hub.
The installation process and scripts are very versatile and can be adjusted by passing the right combination of variables and arguments to each of the commands.
The following examples should cover most scenarios, in each, a wrapper script
will be installed on the host that should ease creation and management of the
containerized application. When executing the script it will create a container
named embyserver
. Additionally, the script will ensure that this container gets
setup with the appropriate environment variables and volumes each time it is
executed.
Start the installation by issuing the following command from within a terminal:
docker run -it --rm -v /usr/local/bin:/target \
emby/embyserver instl
Optionally, you can also install a systemd service file by executing:
docker run -it --rm -v /etc/systemd/system:/target \
emby/embyserver instl service
To enable the systemd service for embyserver
execute the following:
sudo systemctl enable embyserver@${USERNAME}
In the following instructions adjust each command replacing username
with the
name of the user you wish to install and run the container as.
To install the application execute and, again, adjust the command replacing
username
accordingly.
docker run -it --rm -v /usr/local/bin:/target \
-e "APP_USER=username" \
emby/embyserver instl
Note, if the user is a system account, the command will need further
adjustment. This is because by default the script stores settings and
configuration in a hidden folder within the executing user's home directory.
This can be overridden by passing the appropriate environment variable
(APP_CONFIG
) to the instl
script, such as in the example below:
docker run -it --rm -v /usr/local/bin:/target \
-e "APP_USER=username" \
-e "APP_CONFIG=/var/lib/embyserver" \
emby/embyserver instl
Optionally, proceed to installing the systemd service:
docker run -it --rm -v /etc/systemd/system:/target \
emby/embyserver instl service
Additionally, you can enable the service on boot by executing:
sudo systemctl enable embyserver@username.service
Installation from GitHub is recommended only for the purposes of troubleshooting and development. To install from GitHub execute the following:
git clone https://github.com/MediaBrowser/Emby.Build
cd docker-containers/stable
make instl
Additionally, you can install the systemd service file after executing the above by issuing the following:
make service
Once the embyserver wrapper script for docker has been installed you just need to execute the wrapper script from within a terminal:
emby-server
On the first run the wrapper script will prompt for system paths that you wish made accessible from within the container. Enter one path per line.
Volumes which should be mounted within the container at runtime are kept in the
volume configuration file found under the APP_CONFIG
folder on the host. The
location will vary depending on the type of installation.
If the wrapper script was installed as the executing user the volume
configuration file can be found at:
${HOME}/.embyserver/.embyserver.volumes
Otherwise at:
${APP_CONFIG}/.embyserver.volumes
You can upgrade the version of embyserver found within the container by executing one of the following commands:
emby-server update
Or by executing:
docker exec emby-server update
You can update the container itself by executing:
docker pull emby/embyserver
docker stop emby-server
emby-server
If you wish the docker container to automatically update upon creation, set the
environment variable EDGE
to 1
. Please read the Technical Details
section
for the various ways this can be achieved.
In order to have the container periodically check and upgrade the embyserver binary
one needs to add a crontab
entry. Like
so:
echo "0 2 * * * docker exec emby-server update" | sudo tee -a /var/spool/cron/crontabs/root
or
echo "0 2 * * * emby-server update" | sudo tee -a /var/spool/cron/crontabs/root
docker run -it --rm \
--volume /usr/local/bin:/target \
emby/embyserver uninstl
For debugging and maintenance purposes you may want access the containers
shell. If you are using Docker version 1.3.0
or higher you can access
a running containers shell by starting bash
using docker exec
:
emby-server console
emby-server logs
emby-server status
You can find the template for this container on GitHub. Located here.
Please navigate to the Docker settings page on unRAID's Web-UI and under repositories add:
https://github.com/MediaBrowser/Emby.Build/tree/master/unraid-templates/emby
For more information on adding templates to unRAID please visit the unRAID forums.
On unRAID, execute the following to have the container periodically update
itself. Additionally, add the same line of code to your go
file to make the
change persistent.
echo "0 2 * * * docker exec emby-server update" | sudo tee -a /var/spool/cron/crontabs/root
By default the containerized application has been set to run with UID and GID
1000
. If using the automatic install method from Docker, the container is set
to run with the UID and GID of of the user executing the embyserver
wrapper
script. Additionally, the wrapper script saves embyserver's configuration and
settings in a hidden sub folder in the executing user's home directory. Most
default settings can be adjusted by passing the appropriate environment
variable. Here is a list of any and all applicable environment variables that
can be override by the end user.
You can adjust some of the default settings set for container/application by passing any or all of the following environment variable:
ENV VAR | Definition |
---|---|
APP_USER | Name of user the service will run as.[4] |
APP_UID | UID assigned to APP_USER upon creation, or will query APP_USER's ID.[3] |
APP_GID | GID assigned to APP_USER upon creation, or will query APP_USER's GID.[3] |
APP_CONFIG | Location where application will store settings and database on host.[1] |
APP_GCONFIG | Location where application will store settings and database within guest.[4] |
UMASK | umask assigned to service, default set to 002.[4] |
EDGE | Update the containerized service, default set to 0(Off).[4] |
[1]: Variable is applicable only during install.
[2]: Variable is applicable during install, when invoking installed wrapper script or systemd service.
[3]: Variable is applicable only when invoking docker run directly.
[4]: Variable is applicable in all scenarios.
In order to pass any of the applicable variables during install or when
invoking docker run
directly please read Docker's documentation on environment variables for clarification if the following examples are not clear.
In the following examples will use the environment variable EDGE
. EDGE
has
been chosen since it is applicable during all scenarios.
To pass the EDGE
variable will invoking docker run
append the following
prior to the image name. Any and all other applicable variables can be done in
the same manner.
--env=EDGE=1
To pass the environment variable during the other scenarios do so like in one of the examples below:
From the commandline when calling the wrapper script:
EDGE=1 emby-server
By adjusting the systemd service:
[Service]
Type=simple
Environment=EDGE=1
...
-
/config
- Folder for configuration and settings.
Of course you can always run the docker image manually. Please be aware that if
you wish your data to remain persistent you need to provide a location for the
/config
volume. For example,
docker run -d --net=host -v /*your_config_location*:/config \
-e TZ=America/Edmonton
--name=emby-server emby/embyserver
All the information mention previously regarding user UID and GID still applies when executing a docker run command.
Before proceeding please ensure you have made a backup of your emby data (i.e. tar cvf embydata.tar /var/lib/emby-server
). Additionally, please verify that you are mounting your emby data as described above.
In the following example we will demonstrate how to migrate your database using the default setting that emby is deployed with. By default on Linux distributions Emby Server keeps it's data in /var/lib/emby-server
, while the Docker container keeps it's data in /config
. That being said one could migrate their database as follows:
docker exec -ti emby-server bash
s6-svc -d /run/s6/services/emby-server
migrate_db /config/data/library.db /var/lib/emby-server /config
s6-svc -u /run/s6/services/emby-server
exit
Emby Home | Latest News | Emby Downloads | Emby Community Forums | © 2019 Emby LLC
- Movie naming
- TV naming
- Music naming
- Audio Book naming
- Book naming
- 3D videos
- Excluding files
- Media stubs
- Strm files
- Subtitles
- Automatic Subtitle Downloads
- Manual Subtitle Downloads
- Theme songs & videos
- Trailers
- Identify
- New Media Date Handling
- Installation
- Connectivity
- Library setup
- Optional Network Paths
- Server settings
- Log Files
- Auto-Organize
- Camera upload
- Channels
- Cinema Intros
- Collections
- Devices
- Hosting settings
- Live TV
- Notifications
- Plugins
- Scheduled tasks
- Transcoding
- Backing up Emby Server
- Emby Server as a Windows Service
- Open Subtitles
- Secure Your Server
- Webhooks
- Users
- Parental controls
- Passwords
- Content access
- Device access
- Emby Connect
- Emby Connect Password Reset
- Live TV (setup)
- Live TV Plugins
- DVR Settings
- Apple TV
- Amazon Alexa
- Amazon Fire TV
- Android Mobile
- Android TV
- Chromecast
- Emby Theater for Windows
- Google Home
- iOS
- Roku
- Web App
- Keyboard and Remote Support
- Emby Premiere
- How do I purchase?
- Membership Options
- Feature Matrix
- How do I get my key?
- Is my Emby Premiere key still valid with Emby 4.0?
- What if I lose my key?
- My Emby Key Says it is Invalid or Missing
- How do I upgrade my membership?
- Is there a limit to Premiere?
- Why is the price different in the App store?
- How do I cancel my membership?
- Multiple servers