Categories
Self-Hosted

How to Install Heimdall Dashboard with Docker on Ubuntu 20.04

This tutorial will show you how to install Heimdall with Docker on Ubuntu 20.04. Overall, you will learn how to install Docker, create a config directory for Heimdall dashboard, and run Heimdall Docker image.

Heimdall Dashboard & Docker

Heimdall is a web-based application dashboard. You can use it to organize and monitor self-hosted applications like radarr, sonarr, plex, emby, and torrent applications like transmission or deluge with live stats. Earlier, we’ve covered how to install Heimdall without Docker on Ubuntu 20.04, but if Docker is the preferred way for you to install Heimdall and run it, this tutorial will show you how to install Heimdall with Docker on Ubuntu 20.04.

With Docker, you don’t have to worry if your Heimdall will auto-start, because Docker daemon will take care of it. You also don’t need to worry about installing dependencies. One downside would be that, if you have Nginx or Apache web server running out site, the Heimdall container will start a web server inside it. But the advantages outweigh the disadvantages, which is probably why you prefer Docker. No more talks, let’s dive in.

Prerequisite

You should have access to the terminal or can ssh into your machine.

The user you used to log in should have root access. This is needed to install Docker and Heimdall system-wide.

Install Docker on Ubuntu 20.04

Before we install Heimdall dashboard using Docker, we will need to install Docker first. Here we choose to install Docker from its official repository instead of the official Ubuntu 20.04 repository as it can become outdated soon.

Install the required software

First, we will need to install the necessary software for Docker installation. These include apt-transport-https, ca-certificates, curl, gnupg-agent, and software-properties-common. You might have already installed them, but using apt install won’t affect anything.

sudo apt update
sudo apt install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

After running the commands above, you will see the following output for you to check some details like what new packages will be installed and how much disk space it needed. Type “Y” and press enter, or directly press enter to continue installing them.

Reading package lists… Done
Building dependency tree
Reading state information… Done
ca-certificates is already the newest version (20190110ubuntu1).
curl is already the newest version (7.68.0-1ubuntu2).
software-properties-common is already the newest version (0.98.9).
The following NEW packages will be installed:
apt-transport-https gnupg-agent
0 upgraded, 2 newly installed, 0 to remove and 31 not upgraded.
Need to get 6,940 B of archives.
After this operation, 206 kB of additional disk space will be used.
Do you want to continue? [Y/n]

Add official Docker key

Next we’ll add Docker official key to avoid man-in-middle attack to make sure your download the genuine file from docker.com.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

If you see output “OK”, the key is successfully added.

Add docker key for Heimdall installation

Set up official Docker Ubuntu repo

Now we’ll add the official Docker repository for Ubuntu 20.04. The following command will add deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable to the sources.list file automatically: /etc/apt/sources.list.

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

You will see output similar to the following:

Add docker Ubuntu repository for Heimdall installation
Ign:1 http://dl.google.com/linux/chrome/deb stable InRelease
Hit:2 http://archive.ubuntu.com/ubuntu focal InRelease
Get:3 http://security.ubuntu.com/ubuntu focal-security InRelease [107 kB]
Hit:4 http://dl.google.com/linux/chrome/deb stable Release
Hit:5 https://download.docker.com/linux/ubuntu bionic InRelease
Get:6 http://archive.ubuntu.com/ubuntu focal-updates InRelease [107 kB]
Ign:8 https://download.docker.com/linux/ubuntu focal InRelease
Err:9 https://download.docker.com/linux/ubuntu focal Release
404 Not Found [IP: 13.35.82.24 443]
Get:10 http://archive.ubuntu.com/ubuntu focal-backports InRelease [98.3 kB]
Reading package lists… Done
E: The repository 'https://download.docker.com/linux/ubuntu focal Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

If you see some error like above, that is because as of the time of writing the focal (the codename of Ubuntu 20.04) branch is not available yet, we will now change $(lsb_release -cs) to bionic (the codename of Ubuntu 18.04). If you don’t see any error, do not follow this step.

To change to the Ubuntu 18.04 branch, edit /etc/apt/sources.list using your favorite editor (nano, vim, emacs) and go to the end of the file, change focal to bionic. Save and quit.

sudo vim /etc/apt/sources.list
File content of /etc/apt/sources.list with focal
File content of /etc/apt/sources.list with bionic

apt install Docker

First, we will need to get the up-to-date package information from the Docker Ubuntu repository using apt update.

sudo apt update

You will see output like the following:

get the up-to-date package information from the Docker Ubuntu repository
vh@varhowto-com:~$ sudo apt update
Hit:1 http://security.ubuntu.com/ubuntu focal-security InRelease
Hit:2 https://download.docker.com/linux/ubuntu bionic InRelease
Ign:3 http://dl.google.com/linux/chrome/deb stable InRelease
Hit:4 http://dl.google.com/linux/chrome/deb stable Release
Hit:5 http://archive.ubuntu.com/ubuntu focal InRelease
Get:7 http://archive.ubuntu.com/ubuntu focal-updates InRelease [107 kB]
Get:8 http://archive.ubuntu.com/ubuntu focal-backports InRelease [98.3 kB]
Fetched 205 kB in 1s (243 kB/s)
Reading package lists… Done
Building dependency tree
Reading state information… Done
31 packages can be upgraded. Run 'apt list --upgradable' to see them.

Next we install Docker and its command line tool through sudo apt install docker-ce docker-ce-cli containerd.io.

sudo apt install docker-ce docker-ce-cli containerd.io

You will see output like the following. Press enter to proceed.

vh@varhowto-com:~$ sudo apt install docker-ce docker-ce-cli containerd.io
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following additional packages will be installed:
aufs-tools cgroupfs-mount pigz
The following NEW packages will be installed:
aufs-tools cgroupfs-mount containerd.io docker-ce
docker-ce-cli pigz
0 upgraded, 6 newly installed, 0 to remove and 31 not upgraded.
Need to get 85.7 MB of archives.
After this operation, 385 MB of additional disk space will be used.
Do you want to continue? [Y/n]

Verify Docker installation

After you install Docker, it will auto-start through systemd. To test if docker has been automatically started, use sudo service docker status:

sudo service docker status

If you see “active (running)” in the output, it means Docker is running:

docker systemd status
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2020-05-10 15:11:01 EDT; 38s ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 9858 (dockerd)
Tasks: 11
Memory: 48.7M
CGroup: /system.slice/docker.service
└─9858 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Reference:

https://docs.docker.com/engine/install/

https://docs.docker.com/engine/install/ubuntu/

Install Heimdall Dashboard with Docker

Now Docker has been installed, we will pull the Heimdall image (dockerfile) and install the dashboard.

Create Heimdall config directory

First, we create a config directory for Heimdall dashboard using the Linux convention: .config/heimdall/.

mkdir -p .config/heimdall/

Get uid and gid

Next we decide which user the process will run by using the command id.

get the uid and gid to run Heimdall docker image

My uid and gid are both 1001. If yours is 1000, it’s fine as the user vh is the second one I created. We will use this id when we run the image

Run Heimdall in Docker

With docker, we don’t need to install Heaimdall the traditional way. We will simply run an image will a set of desired parameters and Docker will create a container by pulling it from Docker Hub, so it can run immediately.

sudo docker run \
  --name=heimdall \
  -e PUID=1001 \
  -e PGID=1001 \
  -e TZ=America/New_York \
  -p 7888:80 \
  -p 4443:443 \
  -v ~/.config/heimdall/:/config \
  --restart unless-stopped \
  linuxserver/heimdall

After you run the docker run command, Docker will pull the latest Heimdall image and initialize it. After you see “Creating app key. This may take a while on slower systems”, it will take a while. When you see “[services.d] done.”, you can access Heimdall dashboard next. By using --restart, Heimdall will start with docker after reboot.

Heimdall Docker container is successfully started

Here is the full ouput:

Unable to find image 'linuxserver/heimdall:latest' locally
latest: Pulling from linuxserver/heimdall
552d4e2d9bdc: Pull complete
0156ccb39baa: Pull complete
780905421ada: Pull complete
ff5f651352a9: Pull complete
3a28cbd238d1: Pull complete
d1fdf52df0aa: Pull complete
71403085d445: Pull complete
Digest: sha256:4ac329c345a9e074630875c3649581fd0b36cd14b2ec8d7244061cf8322e18fe
Status: Downloaded newer image for linuxserver/heimdall:latest
[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 linuxserver.io
-------------------------------------

To support LSIO projects visit:
https://www.linuxserver.io/donate/
GID/UID
User uid: 1001
User gid: 1001
[cont-init.d] 10-adduser: exited 0.
[cont-init.d] 20-config: executing…
[cont-init.d] 20-config: exited 0.
[cont-init.d] 30-keygen: executing…
generating self-signed keys in /config/keys, you can replace these with your own keys if required
Generating a RSA private key
……………………..+++++
……………….+++++
writing new private key to '/config/keys/cert.key'
[cont-init.d] 30-keygen: exited 0.
[cont-init.d] 50-config: executing…
New container detected, installing Heimdall
Creating app key. This may take a while on slower systems

Docker options explained

Here we assign the name “heimdall” by --name=heimdall. So later we can start it by docker start heimdall.

-e means we set environment variables for who will run the process and the time zone data.

With -e PUID= and -e PGID=1, we used the vh user, whose id (PUID) is 1001 and group id (PGID) is 1001, to run the Heimdall image.

Using -e TZ=, we set the time zone to New York, which is the Easter time zone I live in. If you live in other parts of the United States, you can use “America/Chicago” for Central time, and “America/Los_Angeles” for Pacific time. For Alaska and Hawaii, use “America/Anchorage” and “Pacific/Honolulu” respectively. For other countries, here is a list of time zones you can use: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones.

Using -p, we forward 80 and 443 port in the container to 7888 and 4443 the host machine, which is the one you are currently using or ssh’ing into. Later we will use localhost:7888 to access Heimdall dashboard.

By -v, we bind mount a path to /config in the image. Here we used ~/.config/heimdall/. If you open ~/.config, you will a lot of applications are using it.

With linuxserver/heimdall, we pull the image from Docker Hub: https://hub.docker.com/r/linuxserver/heimdall/.

Open Heimdall dashboard

Now open a browser, type or right click localhost:7888 to open Heimdall dashboard that you just installed. You will see the Heimdall web interface as below.

The web interface of heimdall

When you want to stop it, use Ctrl-c to stop the container and you will see the following output.

[s6-finish] waiting for services.
[s6-finish] sending all processes the TERM signal.
[s6-finish] sending all processes the KILL signal and exiting.

To start Heimdall dashboard later, run sudo docker start heimdall. This time it will exit immediately, but it still runs in the background. To double-check, use sudo docker ps.

use sudo docker ps to double check Heimdall is still running in background.

You don’t have to worry if you need to start heimdall dashboard after your computer reboots. We used the --restart earlier and heimdall container will start when docker starts.

Reference:

Steps to install Heimdall Dashboard using Docker on Ubuntu 20.04

Time Needed : 5 minutes

  1. Install Docker for Heimdall dashboard

    Run sudo apt install docker.io to install Docker from the Ubuntu 20.04 repository. The recommended way is to install through Docker's official repository, please refer to the article to do so.
    Screenshot from 2020 05 10 18 43 05

  2. Verify Docker is installed

    Run sudo service docker status and you will see active (running) in the Active line.
    image 20

  3. Create Heimdall config directory

    mkdir -p .config/heimdall/
    image 22

  4. Run Heimdall container

    sudo docker run \
    --name=heimdall \
    -e PUID=1001 \
    -e PGID=1001 \
    -e TZ=America/New_York \
    -p 7888:80 \
    -p 4443:443 \
    -v ~/.config/heimdall/:/config \
    --restart unless-stopped \
    linuxserver/heimdall

    image 26

  5. Visit Heimdall

    Open a browser tab and visit http://localhost:7888
    image 28

Tools
  • Terminal
  • SSH
Materials
  • Linux (Ubuntu 20.04)

+2

By VarHowto Editor

Welcome to VarHowto!

2 replies on “How to Install Heimdall Dashboard with Docker on Ubuntu 20.04”

i have a Problem:
Processing: App\Jobs\ProcessApps
Processing: App\Jobs\ProcessApps
Processing: App\Jobs\ProcessApps
Failed: App\Jobs\ProcessApps

+1

Leave a Reply

Your email address will not be published. Required fields are marked *