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.
Contents
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.
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:
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
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:
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.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
.
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.
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.
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
.
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:
- https://blog.heimdall.site/index.php/2018/02/28/installing-docker-and-heimdall-application-dashboard-on-ubuntu/
- https://github.com/linuxserver/docker-heimdall
Steps to install Heimdall Dashboard using Docker on Ubuntu 20.04
Time Needed : 5 minutes
- 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. - Verify Docker is installed
Run
sudo service docker status
and you will seeactive (running)
in the Active line. - Create Heimdall config directory
mkdir -p .config/heimdall/
- 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 - Visit Heimdall
Open a browser tab and visit http://localhost:7888
Tools
- Terminal
- SSH
Materials
- Linux (Ubuntu 20.04)
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
Did you find a solution?