As a Sumoling, I have purchased dozens of SaaS apps from AppSumo. I need a customised homepage to organise my SaaS and self-hosted service.
I have tried a few options on the market, but only Dashy is a perfect fit for me.
It provides not only an intuitive GUI but also a lot of icon options.
Moreover, it supports multiple pages, so I can categorise different services on various pages. This article will teach you how to set up a Dashy dashboard using Docker Compose.
Step 1: Update the package list and install the required packages.
sudo apt-get update sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release
Step 2: Import the Docker official GPG Key to your system.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Step 3: Update the package list again and install Docker Compose.
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
Step 4: Move to your home directory and clone the Dashy project from GitHub.
cd ~ git clone https://github.com/Lissy93/dashy.git
Step 5: Move to your Dashy directory and modify the docker-compose.yml. At this moment, there is a minor bug that Dashy will not rebuild whenever we make a change.
We have to add “entrypoint: [“yarn”,”build-and-start”]” to the docker-compose.yml to make it function properly. The drawback is whenever you click the “save on disk” button, it will build the whole project again. It can be CPU-consuming for some low-end VM. I hope there is a more elegant way to solve this problem.
You may have a look at the issue here.
cd dashy sudo nano docker-compose.yml
version: "3.8" services: dashy: container_name: Dashy hostname: dashy # Pull latest image from DockerHub image: lissy93/dashy:latest volumes: - ./public:/app/public - type: bind source: .env target: /app/public/.env entrypoint: ["yarn","build-and-start"] ports: - 4000:80 # Set any environmental variables environment: - NODE_ENV=production # Specify restart policy restart: unless-stopped # Configure healthchecks healthcheck: test: ['CMD', 'node', '/app/services/healthcheck'] interval: 1m30s timeout: 10s retries: 3 start_period: 40s networks: - npm networks: npm: name: npm_network
Press Ctrl + X to save the file.
Step 6: Modify .env file.
sudo sed -i 's/# HOST=localhost/HOST=0.0.0.0/' .env
sudo nano .env
# The host that Dashy is running on, domain or IP HOST=0.0.0.0
Press Ctrl + X to save.
Step 7: Execute the Docker container in the background.
sudo docker compose up -d
Step 8: Click the pencil icon on the top-right corner to enter edit mode.
Step 9: Click the Edit Pages.
Step 10: Add two dummy pages, as shown below. Click Save.
Step 11: Click the Save to Disk in the bottom-right corner.
After some time, press F5 to reload the page, and the “Home” and “Work” pages will be displayed on your Dashy dashboard.
Step 12: Click the pencil icon on the top-right corner to enter edit mode and click the Edit Page Info in the bottom-left corner.
Step 13: Remove the GitHub and Documentation pages by clicking the minus icon.
Press Save to Disk to take effect.
If your Dashy dashboard rebuilds whenever you make a change, congratulations, you have successfully created your personal home page.
The following article will teach you how to add authentication on Dashy using Authelia.
Reverse Proxying your Dashy dashboard under Nginx Proxy Manager and DNS proxying your domain with Cloudflare will also be included.