Table of Contents
Introduction:
Today we will be installing Dashy dashboard using Portainer and Docker on a Raspberry Pi 4. This is episode 30 in our Raspberry Pi 4 Series.
Prerequisites:
If you have not followed our previous episodes we recommend you do so before attempting to follow any of our episodes. Each tutorial follows a custom setup and you may miss some information. However, if you meet all the following prerequisites then you should be fine to proceed.
- A Raspberry Pi with Raspberry Pi OS installed.
- Secured Raspberry Pi.
- Docker and Portainer Installed.
- An AppData folder to be used to store Dashy's conf.yml configuration file.
- A device to initiate an SSH terminal session.
What is Dashy?.
Dashy is a self-hosted fully customisable dashboard that you can save bookmarks to. You can customise your bookmarks to display in various different ways. Dashy can also integrate with other self-hosted applications so their data can be displayed on the dashboard. You can use Dashy on all your devices by using the IP address as your homepage.

Dashy Quick Resources:
Example Configuration Files For Dashy: https://gist.github.com/Lissy93/000f712a5ce98f212817d20bc16bab10
Free Dashboard Icons: https://github.com/walkxhub/dashboard-icons
Dashy Showcase - https://dashy.to/docs/showcase
How to install Dashy Docker on a Raspberry Pi 4.
Step 1 - Create the folders needed for the Dashy Docker container.
Open up a terminal or Putty application.
Connect to your Raspberry Pi via SSH (secure shell).
ssh -p PORT USERNAME@YOURRASPBERRYPIIP
Navigate to your "Appdata" folder or the place where you store all your container's persistent configuration data.
cd /srv/YOURUSBDISKUUID/Appdata
Create a folder called "dashy".
mkdir dashy
Navigate into the "dashy" folder.
cd dashy
You will now need to create a conf.yml file so we can add our configuration data to it. This file is also needed so that you can compile and save configuration changes you make from within the dashboard.
touch conf.yml
In order for the configuration file to be read by the docker container we need to add some example data to the conf.yml file. To edit this file we will use nano.
nano conf.yml
From here you can paste the following text into the nano text editor window.
---
# Page meta info, like heading, footer text and nav links
pageInfo:
title: Dashy
description: Welcome to your new dashboard!
navLinks:
- title: GitHub
path: https://github.com/Lissy93/dashy
- title: Documentation
path: https://dashy.to/docs
# Optional app settings and configuration
appConfig:
theme: colorful
# Main content - An array of sections, each containing an array of items
sections:
- name: Getting Started
icon: fas fa-rocket
items:
- title: Dashy Live
description: Development a project management links for Dashy
icon: https://i.ibb.co/qWWpD0v/astro-dab-128.png
url: https://live.dashy.to/
target: newtab
- title: GitHub
description: Source Code, Issues and Pull Requests
url: https://github.com/lissy93/dashy
icon: favicon
- title: Docs
description: Configuring & Usage Documentation
provider: Dashy.to
icon: far fa-book
url: https://dashy.to/docs
- title: Showcase
description: See how others are using Dashy
url: https://github.com/Lissy93/dashy/blob/master/docs/showcase.md
icon: far fa-grin-hearts
- title: Config Guide
description: See full list of configuration options
url: https://github.com/Lissy93/dashy/blob/master/docs/configuring.md
icon: fas fa-wrench
- title: Support
description: Get help with Dashy, raise a bug, or get in contact
url: https://github.com/Lissy93/dashy/blob/master/.github/SUPPORT.md
icon: far fa-hands-helping
If you would like to use a different example configuration a list can be found here: https://gist.github.com/Lissy93/000f712a5ce98f212817d20bc16bab10
Press "Ctrl + X" then "y" then "Enter" to save the conf.yml file.
You will now need to get the absolute path for your Dashy folder which contains your conf.yml file.
Type the following command
pwd
Copy the absolute path output from the pwd command and paste it into a text file. You will need this in Step 2.
Step 2 - Create the Dashy Container Using Portainer and a Stack.
Navigate to your Portainer dashboard and log in.

From the left hand menu click on "Stacks".

Now in the Stacks dashboard click on "Add a stack".

In the "Name" field enter "dashy"
Dashy Docker Compose Stack
---
version: "2.1"
services:
dashy:
image: lissy93/dashy
container_name: Dashy
volumes:
- /PATHTOAPPDATA/DASHY/conf.yml:/app/public/conf.yml
ports:
- 4000:80
environment:
- NODE_ENV=production
- UID=1001
- GID=100
restart: always
Replace the "PATHTOAPPDATA/DASHY" with the absolute path you obtained in Step 1 when using the pwd command. Be sure to leave the "/conf.yml" at the end of the path.
You will also need to change the "PUID", "PGID" and the left side of the colon "port" number (only required if port 4000 is already in use) to match your setup.
You can find out how to get your PUID and PGID by following our episode 30 YouTube video tutorial.
Once you have completed that you are ready to click "Deploy the stack".

If you navigate to "Containers" in the left menu

You should now see your "dashy" container in the list "click on the logs icon".


Give the container a few minutes to fully internalise. You can check its progress in Portainer using the dashy log.
When it has fully started up and compiled the first load of the conf.yml file build. It will state the following in the log "DONE Build complete. Watching for changes…". You should now be able to access the dashboard from a browser.
Open up your browser of choice and enter the following into the address bar. Change "YOURRASPBERRYPIIP" with the IP address of your Raspberry Pi.
http://YOURRASPBERRYPIIP:4000
You should now see the dashboard interface.

The installation is now complete and you are ready to start configuring Dashy dashboard.
If you would like to know how to configure Dashy. Please follow our YouTube tutorial for this episode as we explain the process in detail there.


I have been trying to get local icons to work but they always give me a broken link. I’ve added the volume for where the icons are going to be stored but the config doesn’t seem to want to take it at all.
So this is my second comment don’t know why my first isn’t there but here we go again. I am trying to get the icons to be pulled locally instead of from a site.
Within docker compose I have added the below line under volumes:
– /mnt/Media/appdata/dashy:/app/public/item-icons
The favicon was converted .png to a .ico.
From within Dashy added portainer.ico to the icon section and saved to disk.
I also did this from within the conf.yml file.
I’ve tried adding the actual path from within dashy and conf.yml as /mnt/Media/appdata/dashy/portainer.ico
No matter what the icon still shows as being broken. Clearly there is something I am missing I just don’t know what at this point.
Try looking at the permissions on your icon directory.
I know I am way late for this one because I had this issue as well but here is for anyone looking for this fix in the future.
My local icons are in the following folder
/mnt/jelly/appdata/dashy/icons/dashboard-icons
My docker compose file has the below line for the local icons.
/mnt/jelly/appdata/dashy/icons:/app/public/item-icons/icons
In order for the icons to load I had to add /icons to the end of sides of the colon.
Just keeps “Running” and never gets to health. Logs show error about a flag. The flag is The interactive-flag is not set. You might not be able to use the console properly. There is no where to enter/modify or make a work around. My Portainer is different to yours – there is no advanced settings, just settings with meaningless bumf in it.
thank man
Thank you for the video and for this article.
I tried a lot to install Dashy on portainer (Docker 24.0.7 / Portainer 2.19.4) running on Raspberry Pi 3B+ with Raspbian (Linux 10 – Buster).
And during 4 days I always get an error in the dashy logs : “Fatal Error in , line 0 unreacheable code” when trying to start the dashy container.
I finally found on a forum a guy who said : “it looks like the ARM architecture versions are using QEMU and running via docker requires the –privileged=true flag.”
So, in your conf.yml file I added a line in the bloc Services, just after the line “container_name : Dashy”
privileged: true
And now, dashy is starting correctly. Hope it can be usefull. I search a long time and I did’nt find this information, nether on the dashy website.
Can I just offer you an ironic ‘thanks’ for making me watch an entire 40 minute video to find I need to type the ‘id’ command! Even then the instruction is ambiguous since you refer to ‘PUID’ and ‘PGID’ when both Dashy and the ID command use just ‘UID’ and ‘GID’! But an un-ironic thanks for all the other useful information and introducing me to Dashy!