How to Install Emby on a Raspberry Pi

  • Post author:WunderTech
  • Post last modified:October 22, 2023
  • Post category:Raspberry Pi
  • Reading time:9 mins read

Today we are going to take a look at how to install Emby on a Raspberry Pi.

Emby is a home media server that will allow you to stream your digital media to client devices. I am going to assume that if you’re going to run Emby on a Raspberry Pi, you probably will be hooking up an external hard drive with your media on it.

If you’re storing that data on a PC or NAS, you probably want to just run Emby there (if it’s an option). Please feel free to check out my tutorial on how to install Emby on a Synology NAS if you think you’d prefer running it there!

You can also check out our tutorial on how to run Jellyfin on a Raspberry Pi if you’d prefer running the open-source program!

1. How to Install Emby on a Raspberry Pi

1. First, we will create a directory where the external hard drive can mount when our Raspberry Pi is booted.

sudo mkdir /mnt/media

2. Run the command below to get the list of hard drives that we have attached to our Raspberry Pi.

sudo fdisk -l

3. Find your external hard drive in this list. Run the command below and copy the UUID of the external hard drive.

sudo blkid
how to install emby on a raspberry pi - checking the UUID of the devices connected to a raspberry pi

4. Run this command to edit the fstab file.

sudo nano /etc/fstab

5. Enter in the line exactly as shown (add your UUID and drive type) below and write out the file by pressing CTRL + O when complete.

NOTE: You must “tab” between each block of text (each space below). It is also important to note that the “nofail” parameter allows you to boot the Raspberry Pi without the external hard drive attached – if this doesn’t exist, your Raspberry Pi will throw an error when the external hard drive is not connected and won’t boot.

UUID=[the UUID of your external hard drive] /mnt/media [drive type] defaults,nofail 0 2
emby raspberry pi - adding the UUID to the fstab file

6. Reboot your Raspberry Pi. When it boots back up, navigate to the folder that we mounted using the commands below and you should see your external hard drives files.

cd /mnt/media
emby raspberry pi - navigating to the media folder

7. We will be installing this application using Docker and Portainer. If you haven’t installed Docker and Portainer on your Raspberry Pi yet, please follow these instructions first.

8. Select Volumes and then Add Volume.

emby raspberry pi - volume settings in portainer

9. Give the volume the name Emby and then Create the volume.

emby raspberry pi - creating a volume in portainer

10. Take note of the Emby Mount Point as we will need it for our next step.

mount paths for docker in portainer

11. Select Stacks and then Add Stack.

stacks inside of portainer

12. Give the container a name and then paste the stack below. Be sure to update the items in pink to reflect your time zone and the local path to your config folder and media folders.

Feel free to change the PUID and GUID if you’d like, but these are the default values for the pi user. Select Deploy the stack when you’re finished.

version: "2.1"
    container_name: emby
      - PUID=1000
      - PGID=1000
      - TZ=America/Detroit
      - /var/lib/docker/volumes/Emby/_data:/config
      - /mnt/media:/Media
      - 8096:8096
      - 8920:8920 
    restart: unless-stopped
adding the emby stack to portainer

13. The container will create. When it’s finished, you can access it by navigating to the IP address of your Raspberry Pi and port 8096.


2. Emby Setup

1. Select your preferred language and proceed.

emby language selector

2. Create your user account.

emby user account creation

3. Select your Content Type, then add the folders that we mapped earlier. You will have to do this for each content type.

adding different content types and folders to emby

4. Select your Metadata language.

selecting a metadata language

5. Configure Remote Access as you’d like. I normally disable UPnP as I don’t want any applications opening ports on my router.

remote access for emby

6. Accept the Terms of Service, then Finish! You will be able to login using the username and password you defined, and your media library will start to sync!

7. If you’d like to expose this outside of your local network, please check out my tutorial on Nginx Proxy Manager which will allow you to securely expose it!

3. Conclusion – How to Install Emby on a Raspberry Pi

This tutorial looked at how to install Emby on a Raspberry Pi. Setting up Emby on a Raspberry Pi isn’t too bad thanks to Portainer. Installing stacks is super easy thanks to stacks, and Emby is a great alternative to Plex and Jellyfin.

Thanks for checking out the tutorial on how to install Emby on a Raspberry Pi. If you have any questions on how to install Emby on a Raspberry Pi, feel free to leave them in the comments!


Frank is an IT professional with 13+ years experience and the creator of WunderTech. He focuses on sharing his experience with others on computer hardware, servers, software, networking, and self-hosted apps. He has a BS in Computer Information Systems and an MBA. Learn more about Frank in his bio.

This Post Has 4 Comments

  1. Brendan

    Followed every step, but it can never seem to connect to emby using the pi IP :8096

    Any ideas?

    1. WunderTech

      Are you using a firewall by any chance? If you are, did you allow traffic on port 8096?

  2. Cristiano

    i can’t connect to emby using ip pi: 8096
    Container is Running
    please can I have some advice I’m desperate
    I also tried to open TCP port 8096 from the router

    This is Container LOGS:

    [s6-init] making user provided files available at /var/run/s6/etc…exited 0.
    [s6-init] ensuring user provided files have correct perms…exited 0.
    [fix-attrs.d] applying ownership & permissions fixes…
    [fix-attrs.d] done.
    [cont-init.d] executing container initialization scripts…
    [cont-init.d] 01-envfile: executing…
    [cont-init.d] 01-envfile: exited 0.
    [cont-init.d] 10-adduser: executing…
    _ ()
    | | ___ _ __
    | | / __| | | / \
    | | \__ \ | | | () |
    |_| |___/ |_| \__/
    Brought to you by
    To support LSIO projects visit:
    User uid: 1000
    User gid: 1000
    Your DockerHost is most likely running an outdated version of libseccomp
    To fix this, please visit
    Some apps might not behave correctly without this
    [cont-init.d] 10-adduser: exited 0.
    [cont-init.d] 30-config: executing…
    [cont-init.d] 30-config: exited 0.
    [cont-init.d] 40-gid-video: executing…
    [cont-init.d] 40-gid-video: exited 0.
    [cont-init.d] 90-custom-folders: executing…
    [cont-init.d] 90-custom-folders: exited 0.
    [cont-init.d] 99-custom-scripts: executing…
    [custom-init] no custom files found exiting…
    [cont-init.d] 99-custom-scripts: exited 0.
    [cont-init.d] done.
    [services.d] starting services
    [services.d] done.

    1. WunderTech

      When you created the container, did you specify for it to use port 8096? I am wondering if it handed it a different port number.

Comments are closed.