A simple dashboard for homelab with dashdot integration.
Wallpaper by Unsplash.
The app can be installed using Docker or by running the app directly.
Sample docker-compose.yml
:
name: dashboard
services:
dashboard:
container_name: dashboard
image: ghcr.io/satya164/home-dashboard:main
ports:
- 3096:3096
volumes:
- /DATA/AppData/dashboard/config:/app/config
- /DATA/AppData/dashboard/icons:/app/public/icons
- /DATA/AppData/dashboard/wallpapers:/app/public/wallpapers
restart: unless-stopped
The app can be configured using a config.yml
file in the config
directory.
The configuration file supports the following options:
apps
: The list of apps to show on the dashboardname
: The name of the appicon
: The icon file for the app in thepublic/icons
directoryurl
: URLs for the appinternal
: The internal URL to check if the app is runningexternal
: The external URL to open the app on click
request
: The request options to check the app status (optional)method
: The HTTP method to use (default:HEAD
)status_codes
: The list of status codes to check (default:[200]
)
dashdot
: Configuration for dashdot (optional)url
: The internal URL of the dashdot server
wallpaper
: Configuration for the wallpaper (optional)url
: The wallpaper URL to usefile
: The wallpaper file in thepublic/wallpapers
directory
Internal URLs refer to the local network URLs, or any URL that can be accessed by the server.
The assets can be placed in the public
directory:
public/icons
: Icons for the appspublic/wallpapers
: Wallpapers for the dashboard
The app uses dashdot to show the CPU, RAM, and disk usage of the server. The dashdot
configuration is optional.
Sample config.yml
:
apps:
- name: HomeAssistant
icon: home-assistant.png
url:
internal: http://192.168.0.100:8123
external: https://assistant.mydomain.com
- name: Jellyfin
icon: jellyfin.png
url:
internal: http://192.168.0.100:8096
external: https://jellyfin.mydomain.com
- name: File Browser
icon: filebrowser.png
url:
internal: http://192.168.0.100:6080
external: https://files.mydomain.com
request:
method: GET
- name: Syncthing
icon: syncthing.png
url:
internal: http://192.168.0.100:8384
external: https://syncthing.mydomain.com
request:
status_codes:
- 200
- 401
dashdot:
url: http://192.168.0.100:3001
wallpaper:
url: https://images.unsplash.com/flagged/photo-1551301622-6fa51afe75a9
Install dependencies:
npm install
Copy the sample config file from the Configuration section to config/config.yml
.
Run the app:
npm run dev
To build the Docker image:
docker build --platform=linux/amd64 . -t ghcr.io/satya164/home-dashboard
To run the Docker image:
docker run -p 3096:3096 -v /path/to/config:/app/config -v /path/to/icons:/app/public/icons -v /path/to/wallpapers:/app/public/wallpapers ghcr.io/satya164/home-dashboard:main