Preface
Project URL: Live-dashboard
All steps in this tutorial are performed on Linux servers.
Getting Started
Before you begin, make sure Docker is installed on the server.
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
One-Click Deployment
1. Generate Keys
# Device key (generate one per device and save it)
openssl rand -hex 16
# HASH_SECRET (used internally by the server; only one needed)
openssl rand -hex 32
2. Start the Container
The DEVICE_TOKEN format is secret:deviceID:deviceName:platform.
If you have only one device:
docker run -d --name live-dashboard \
-p 3000:3000 \
-v dashboard_data:/data \
-e HASH_SECRET=<MY_SECRET> \
-e 'DEVICE_TOKEN_1=<MY_TOKEN>:my-pc:MyPC:windows' \
ghcr.io/monika-dream/live-dashboard:latest
For multiple devices:
docker run -d --name live-dashboard \
-p 3000:3000 \
-v dashboard_data:/data \
-e HASH_SECRET=<MY_SECRET> \
-e 'DEVICE_TOKEN_1=<TOKEN_A>:my-pc:我的电脑:windows' \
-e 'DEVICE_TOKEN_2=<TOKEN_B>:my-phone:我的手机:android' \
ghcr.io/monika-dream/live-dashboard:latest
# ─────── ───── ──── ───────
# secret▲ ID▲ name▲ platform▲
# ▲secret: the random string generated in step 1; each device must be different
# ▲ID: custom English identifier (e.g., my-pc, phone-1); each device must be different
# ▲name: display name shown on the dashboard; Chinese is supported (e.g., 我的电脑, 小米手机)
# ▲platform: only windows / macos / android are allowed
Note: Each device must have its own DEVICE_TOKEN_N; neither the secret nor the device ID can be reused. If two devices share the same TOKEN, they will appear as the same device and overwrite each other's status.
Need more devices? Keep adding DEVICETOKEN3, DEVICETOKEN4, and so on. The numbering does not have to be consecutive.
Already have a container and want to add a device? First stop and remove the old container, then recreate it with the new command. Data is stored in the
dashboard_datavolume, so it won't be lost:
docker stop live-dashboard && docker rm live-dashboard
# Then run the docker run command that includes the new DEVICE_TOKEN
3. Open Your Browser
Visit http://localhost:3000. If you see the dashboard page, the server is ready (with no device data yet, it will display in night mode).
Customize Site Metadata
docker run -d --name live-dashboard \
-p 3000:3000 \
-v dashboard_data:/data \
-e HASH_SECRET=<MY_SECRET> \
-e DEVICE_TOKEN_1=<MY_TOKEN>:my-pc:MyPC:windows \
-e DISPLAY_NAME="Your Name" \
ghcr.io/monika-dream/live-dashboard:latest
In addition to the display name, you can customize the browser tab title, page description, and site icon:
docker run -d --name live-dashboard \
-p 3000:3000 \
-v dashboard_data:/data \
-e HASH_SECRET=<MY_SECRET> \
-e DEVICE_TOKEN_1=<MY_TOKEN>:my-pc:MyPC:windows \
-e DISPLAY_NAME="Your Name" \
-e SITE_TITLE="Your Name Now" \
-e SITE_DESC="See what I'm doing" \
-e SITE_FAVICON="/favicon.ico" \
ghcr.io/monika-dream/live-dashboard:latest
Configuring the Agent
Agent Configuration - Windows
Download
live-dashboard-agent.exefrom the author's GitHub Releases.Double-click it to run. On first launch, a settings dialog will appear automatically; enter the server address and Token.
After configuration, the Agent starts reporting automatically.
See the author's tutorial: Agent Configuration - Windows
Download
live-dashboard-agent-macos.zipfrom the author's GitHub Releases.Unzip it and run it directly. On first launch, a settings dialog will appear automatically; enter the server address and Token.
After configuration, the Agent starts reporting automatically.
See the author's tutorial: Agent Configuration - macOS
Agent Configuration - Android
Download link: LiveDashboard
After installing, open the app, go to the Settings page, and enter the server address and Token.
Go to the Health page, tap the Authorize button to grant
Health Connectpermissions, and select the data types you want to sync (all selected by default).Important: On the Status page, use
Shizukufor authorization (otherwise the app name cannot be retrieved).On the Status page, enable the keep-alive permission.
Demo

Demo
Conclusion
Everyone is welcome to come stalk me: Moir Now (already closed)