First, we create a volume for data persistency
Then let's look for an supported heimdall image on dockerhub. You could build one yourself as well or use the one built by the linuxserver community as an alternative (https://hub.docker.com/r/linuxserver/heimdall). Whichever option you choose, the image must support arm architcture for it to work on your Pi.
Next, let's have a look at the docker compose file and let's configure it in our Portainer Container settings.
--- version: "2.1" services: heimdall: image: lscr.io/linuxserver/heimdall:latest container_name: heimdall environment: - PUID=1000 - PGID=1000 - TZ=Europe/London volumes: - /path/to/appdata/config:/config ports: - 80:80 - 443:443 restart: unless-stopped
We create a container for Heimdall using the image we have chosen. As you could see, I have decided to map other ports to 80 and 443, which are needed by Heimdall. So my Heimdall will be reached via broser using 8080 and 8443 instead of 80 and 443. It's up to you which ports you have available on your environment and want to use for the mapping, just keep it as less messy as possible.
Set Interactive and TTY as well so that you can be cool and can access this Heimdall container using ssh.
Now I come back to the volume we have created above in the fist step and map it to the config folder needed to store Heimdall config in the container. With this, even the on the next start Heimdall will still remember what needs to be displayed on the dashboard and will not forget your stuff.
Remember the 3 environment variables above, which are needed? Let's create them and set them accordingly.
I preferred the always restart option over the unless stopped, so this has been set as well.
That's it, now Deploy the container and you're good to go.
Afterwards, your Heimdall will be reachable via browser using:
https://<ip-or-hostname>:9443
https://raspberrypi:9443
In case you did not buy the bundle with the pre-formatted SD Card, start with formatting your SD Card to FAT 32.
You can do so using various tools. In case you are looking for some options, Rufus or AOMEI Partition Assistant might be worth your consideration.
Next download the Imager from https://www.raspberrypi.com/software
Since we are not looking for desktop but rather a server running 24/7, let's choose the lite version of the OS:
Raspberry Pi OS (other) > Raspberry Pi OS Lite (32-bit)
Click Shift Ctrl + X or Enter Settings to enable SSH directly. Also set the hostname so that you do not have to fiddle with your router for the IP address of your Raspberry Pi afterwards. Telemetry is not needed for our purpose so you can deactivate it. Lastly it is recommended to use your own user instead of the standard user "pi" and set an appropiate password for it.
You can also generate an empty file named "ssh" in the "boot" folder on your SD card to enable the SSH access in case is was forgotten before.
Now Remove the SD Card from your PC, plug it into your Pi, plug in the LAN cable and plug in the power cable. Your Pi will boot automatically. Find the IP for your Pi on the Router in use, or connect to your Pi using the hostname.
ssh:<user>@<ip-or-hostname> ssh:pi@raspberrypi
Well then, let's update the OS to the latest greatest first before we continue messing around with it:
sudo apt update && sudo apt upgrade sudo reboot
Meanwhile, you can read about the Docker Installation here: https://docs.docker.com/engine/install/debian/
If you came to this page after a broken docker installation, remove it first before continue. Like so:
sudo apt-get remove docker docker-engine docker.io containerd runc
Now let's install using the convenience script:
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh ./get-docker.sh
If you want to test the installation first, then use the command with DRYRUN option instead
DRY_RUN=1 sudo sh ./get-docker.sh
Add your user to the docker group, then either reboot or reload the new group change:
sudo usermod -aG docker $USER
#sudo usermod -aG docker <my-user>
#sudo reboot
newgrp docker
Now verify the docker version, run a test container and show running containers:
docker –version docker run hello-world docker ps
Details can be read here, remember to choose community edition: https://docs.portainer.io/start/install/server/docker/linux
First let's create a volume for data persistency:
docker volume create portainer_data
The following command will do the job for you, basically download and install the Portainer Server container:
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
There you go, now Portainer should be easily found as running using docker ps and via browser:
https://rspberrypi:9443 https://<ip-or-hostname>:9443
Remember that localhost:9443 only works if you are on the RaspberryPi itself.
sudo raspi-config
# Select System Options or Network Options
# Select Hostname
# Enter a new hostname
# Finish & Yes to Reboot
sudo vi /boot/config.txt # Find the following line: # Additional overlays and parameters are documented /boot/overlays/README # And add these two lines under it: dtoverlay=disable-wifi dtoverlay=disable-bt # Bluetooth is also disabled. Reboot and check ifconfig #eth0 > LAN #wlan0 > bad :)
Your home server could be huge server racks, a NAS such as Synology or a Mini PC such as a Raspberry Pi. Regardless of the hardware choice, as long as you can install and run container management systems such as Portainer CE, Ranger, Yacht, etc. the following containers might prove as helpful and improve your digital & real life tremendously.
But first thing first, what you might need as a minimal set-up could be a Raspberry Pi. I would say a Raspberry Pi 4b with 4GB of RAM should be sufficient, but 8GB is definitely the preferred option. The next thing you need is to have docker installed. Once that's ready, you can choose between Portainer CE, Ranger, Yacht or any other container dashboards you find suitable for you out there. For my personal taste, OpenShift and Ranger are overkills while Yacht is beautiful and has huge potential, but too unstable. Hence up to this point in time, I stick with Portainer CE, which does the job quite well and supports more hosts than Yacht.
The first tool I would recommend is Heimdall. It is an application dashboard, very simple to set up and beautiful at the same time. Applications in your home network will be accessible with a few clicks and look much more attractive. Some apps are even better integrated and display elegant interactive details on the thumbnail.
One of the major advantages of Heimdall is the easy set-up and sleek design. In case you are looking for even more performance, you can go for Fenrus. If you want more configuration options and are familiar with Linux environment, Organizr might be something interesting. Homer and Dashy are also on the show if your heart longs for other alternatives.