现在服务器部署了这么多服务,忘记端口挺难找到对应的服务,因此有一个合适的管理页面也是挺不错的。最好有个Dashboard展示了所有服务的跳转入口,显示Docker容器的运行状态,监视各种硬件信息(运行在Docker容器内这个似乎难以实现,干脆命令行top吧,我对这个也不太在乎),最好还能提供文件服务(完全可以被Samba代替)。

这种Dashboard类的服务可以挂载在80端口,这样浏览器直接输入IP就能访问Dashboard页面了,我尝试了下面几个。

Homer

我试过Homer,但是它有点过于轻量级了,它本身只是一个静态的面板,不会直接管理服务状态、容器、文件等内容,只是跳转和展示链接用的。下面是部署流程:

  • 本地创建一个文件夹homer,进入文件夹

  • 创建docker-compose.yml

    services:
      homer:
        image: b4bz/homer:latest
        container_name: homer
        volumes:
          - ./assets:/www/assets
        ports:
          - 80:8080
        restart: unless-stopped
    
  • 创建一个文件夹assets,在文件夹内创建config.yml,用于管理所有的服务

    ---
    # 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"
    
  • 启动容器,默认用户名密码为adminadmin

    docker compose up -d
    

Portainer

Portainer是个专门用于管理Docker容器状态的管理面板,有点类似于网页版的Docker Desktop,我平时还是更多用命令行操作Docker,总之可以不用但是不能没有吧,下面是部署方式

  • 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和Homer很像(而且GitHub上作者头像的背景也很像不知道为什么),也是一个提供各个服务跳转的页面,而且提供了非常多小组件,且都很好看,作为一个Dashboard我觉得非常不错。

  • 创建docker网络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
    
  • 在启动之前要先创建一个文件夹dashy-data,然后在文件夹内创建一个conf.yml,原作者提供了很多例子详见:Example Config Files for Dashy · GitHub

  • 启动容器

    docker compose up -d
    
  • 可以在conf.yml中加入custom css来隐藏footer

    appConfig:
      customCss: |
        .clock p.time {
          font-size: 3rem !important;
        }
        footer {
          display: none !important;
        }    
    
  • 如果要使用Dashy来监控系统信息,需要安装Glances,Glances在61280端口启动服务,然后Dashy读取信息,这里我把Glances加入了Dashy的Docker网络,详情参考: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最后配置出来还是非常好看的

    Dashy

Uptime Kuma

也是一个UI特别好看的工具,主要作用是监控服务是否在线,以及集成了通知功能,一旦掉线就发送邮件等通知,这是我部署的docker-compose可供参考,网上也有一大堆部署和配置教程。

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

界面还是很好看的

Uptime Kuma