一、为什么高级自建玩家都在用 Homepage 替代传统导航页?

在自建服务的初级阶段,许多玩家只需要一个简单的书签页(比如我们之前介绍的 Sun-Panel 极简导航页)来记录各种端口和域名。然而,随着服务器上的容器生态逐渐丰富,纯静态的书签跳转已经无法满足深度自建玩家的运维诉求:

  • 服务死活无法感知:某个容器因配置报错或 OOM 崩溃退出后,静态书签上没有任何提示,直到点击跳转报错才发现服务已宕机数小时。
  • 关键指标割裂在各个管理后台:想看今天的网络下载进度需要进 Transmission,想看 DNS 拦截率需要进 AdGuard,想看站点拨测可用率需要进 Uptime Kuma。频繁在数十个标签页间切换登录,耗时繁琐。
  • 无法直观掌握宿主机硬件负载:CPU 是不是被某个死循环进程占满?内存和磁盘余量还剩多少?缺乏全局俯瞰视角。

在 GitHub 狂揽超 23,000+ Stars 的明星开源项目 Homepage 正是专为极客打造的高颜值自建仪表盘。它基于轻量高效的 Next.js 构建,不仅拥有秒开的极速响应,更通过原生挂载 Docker Socket 与集成 50+ 款主流自建服务的只读 API,将冰冷分散的各个容器串联为一个生动、实时刷新的私有云控制台。

Homepage 极客仪表盘全栈拓扑与小组件实效图

二、生产级 Docker Compose 部署实操

推荐采用 Docker Compose 进行容器化编排。如果你习惯通过可视化容器工具管理,可直接在 Dockge 轻量容器面板 中部署。以下是生产就绪的配置清单:

services:
  homepage:
    image: ghcr.io/gethomepage/homepage:latest
    container_name: homepage
    restart: unless-stopped
    ports:
      - "127.0.0.1:3000:3000"
    volumes:
      - ./config:/app/config
      - /var/run/docker.sock:/var/run/docker.sock:ro  # 核心:只读挂载 Docker Socket
    environment:
      - TZ=Asia/Shanghai
    security_opt:
      - no-new-privileges:true

关键配置与安全隔离规范

  1. 本地回环绑定与反向代理:ports: ["127.0.0.1:3000:3000"] 将容器 Web 服务限制在宿主机回环地址,避免将未鉴权的管理页面直接暴露到公网。外网访问统一通过 Nginx Proxy Manager 图形化反代 绑定域名、自动申请 Let's Encrypt SSL 证书,并可在 NPM 中设置 Access List 访问白名单。
  2. /var/run/docker.sock:ro(安全只读挂载):挂载 Docker Socket 是为了让 Homepage 实时监听宿主机容器存活状态与资源消耗,末尾务必加上 :ro 只读修饰符,杜绝容器逃逸与未授权写操作,配合 Linux VPS 生产级安全加固实操 保障系统底座安全。

三、模块化 YAML 配置:打造高颜值极客看板

Homepage 的所有布局与配置均存放在挂载的 ./config 目录下,主要由 4 个极简的 YAML 文件驱动:

1. services.yaml:定义服务卡片与 API 状态小组件

Homepage 最大的魅力在于支持在卡片内直接嵌入第三方服务的实时数据小组件(Widget):

- 运维与安全:
    - Uptime Kuma 监控:
        icon: uptime-kuma.png
        href: https://status.yourdomain.com
        description: 站点多协议拨测与可用率告警
        widget:
          type: uptimekuma
          url: http://uptime-kuma:3001
          slug: default

    - AdGuard DNS 拦截:
        icon: adguard-home.png
        href: https://dns.yourdomain.com
        description: 全屋广告拦截与防污染解析
        widget:
          type: adguard
          url: http://adguard-home:80
          username: admin
          password: YourStrongPassword

2. docker.yaml:启用容器自动化状态感知

在 docker.yaml 中声明本地 Docker 实例:

my-docker:
  socket: /var/run/docker.sock

此后,在 services.yaml 中只需给任意服务加上 container: 容器名,Homepage 就会在卡片左上角显示一个绿色的存活指示灯以及该容器当前的 CPU 和物理内存占用率!

3. widgets.yaml:顶部系统状态与实用信息流

可自由开启顶部硬件卡片、天气预报与搜索引擎快捷搜索框:

- resources:
    cpu: true
    memory: true
    disk: /

- search:
    provider: google
    target: _blank

四、日常运维与跨设备体验

Homepage 自身经过编译优化,常驻内存仅需约 30MB ~ 60MB。相比繁重的全栈监控系统,它在提供极致视觉美感的同时,对 VPS 算力几乎零消耗。关于主机整体硬件资源与容器承载规划,可参考 自建服务 VPS 硬件配置与线路选型指南。

更多优雅高效的自建技术方案与容器实战,欢迎持续探索 建站运维专栏!