With so many services deployed on the server, it’s easy to forget ports and hard to find the right service. A proper management dashboard is helpful. Ideally, it should display quick links to all services, show Docker container status, monitor hardware information (though running in Docker containers, this is difficult; command-line top works fine), and ideally provide file services (though Samba can replace this).
Such Dashboard services can run on port 80, allowing direct browser access via IP. I tried several options below.
Homer
I tried Homer, but it’s too lightweight. It’s just a static panel with no direct service management, containers, or files鈥攋ust links and display. Here’s the deployment process:
-
Create a local folder
homerand enter it -
Create
docker-compose.yml:services: homer: image: b4bz/homer:latest container_name: homer volumes: - ./assets:/www/assets ports: - 80:8080 restart: unless-stopped -
Create an
assetsfolder and inside it, createconfig.ymlto manage all services:--- # Homepage configuration title: "Kyxie Web Services" subtitle: "Dashboard" logo: "logo.png" icon: "fas fa-skull-crossbones" header: true footer: false columns: "4" # Optional theme customization theme: default colors: light: highlight-primary: "#3367d6" highlight-secondary: "#4285f4" highlight-hover: "#5a95f5" background: "#f5f5f5" card-background: "#ffffff" text: "#363636" text-header: "#ffffff" text-title: "#303030" text-subtitle: "#424242" card-shadow: rgba(0, 0, 0, 0.1) link-hover: "#363636" dark: highlight-primary: "#3367d6" highlight-secondary: "#4285f4" highlight-hover: "#5a95f5" background: "#131313" card-background: "#2b2b2b" text: "#eaeaea" text-header: "#ffffff" text-title: "#fafafa" text-subtitle: "#f5f5f5" card-shadow: rgba(0, 0, 0, 0.4) link-hover: "#ffdd57" # Optional navbar links: - name: "Github" icon: "fab fa-github" url: "https://github.com/Kyxie" target: "_blank" - name: "Blog" icon: "fas fa-file-alt" url: "https://kyxie.me" # Services services: - name: "Services" icon: "fas fa-server" items: - name: "aria2" icon: "fas fa-download" subtitle: "aria2 RPC Web UI" url: "http://192.168.2.218:6880" target: "_blank" - name: "OpenWRT" icon: "fas fa-wifi" subtitle: "OpenWRT Router" url: "http://192.168.2.66" target: "_blank" - name: "File Browser" icon: "fas fa-folder-open" subtitle: "File Browser" url: "https://file.kyxie.me" target: "_blank" - name: "Vaultwarden" icon: "fas fa-key" subtitle: "Vaultwarden Password Manager" url: "https://vault.kyxie.me" target: "_blank" - name: "Home Assistant" icon: "fas fa-home" subtitle: "Home Automation" url: "http://192.168.2.218:8123" target: "_blank" -
Start the container. Default username and password are
adminandadmin:docker compose up -d
Portainer
Portainer is a specialized panel for managing Docker container status, somewhat like a web version of Docker Desktop. I mostly use command-line for Docker, but it’s available if needed. Here’s the deployment method:
-
docker-compose.yml:services: portainer: image: portainer/portainer-ce:latest container_name: portainer restart: unless-stopped ports: - "9000:9000" volumes: - /var/run/docker.sock:/var/run/docker.sock - ./data:/data
Dashy
Dashy is similar to Homer (and the author’s GitHub avatar background looks suspiciously similar too), providing service links. It also offers countless beautiful widgets. As a Dashboard, I think it’s excellent.
-
Create a Docker network
dashy:docker network create dashy -
docker-compose.yml:services: dashy: image: lissy93/dashy container_name: dashy ports: - "80:8080" volumes: - ./dashy-data:/app/user-data environment: - UID=1000 - GID=1000 restart: unless-stopped networks: - dashy healthcheck: test: ['CMD', 'node', '/app/services/healthcheck'] interval: 1m30s timeout: 10s retries: 3 start_period: 40s networks: dashy: external: true -
Before starting, create a
dashy-datafolder and inside it, create aconf.yml. The original author provides many examples: Example Config Files for Dashy 路 GitHub. -
Start the container:
docker compose up -d -
You can add custom CSS in
conf.ymlto hide the footer:appConfig: customCss: | .clock p.time { font-size: 3rem !important; } footer { display: none !important; } -
To use Dashy for system monitoring, install Glances. Glances starts a service on port 61280, which Dashy reads. Here I added Glances to Dashy’s Docker network. For details, see: Widgets | Dashy
glances: image: nicolargo/glances:latest container_name: glances restart: unless-stopped ports: - "61208:61208" volumes: - /var/run/docker.sock:/var/run/docker.sock:ro pid: host privileged: true environment: GLANCES_OPT: -w PUID: 1000 PGID: 1000 TZ: America/Toronto networks: - dashy -
Dashy looks great when fully configured:
Uptime Kuma
Also a tool with a beautiful UI. Its main function is monitoring service availability and sending notifications (email, etc.) if services go down. This is my Docker Compose setup for reference. There are plenty of deployment and configuration tutorials online.
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
volumes:
- ./data:/app/data
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
- TZ=America/Toronto
restart: unless-stopped
networks:
- cloudflared
networks:
cloudflared:
external: true
The interface looks very nice: