0x01 介绍
Homepage是一款轻量级、高度可定制的个人导航面板,适用于 NAS、家庭服务器、Docker容器等多种场景。通过简洁直观的界面,将常用服务、应用入口、系统状态以及各类监控信息集中展示,让用户可以在一个页面快速访问所有服务。
Homepage采用YAML文件进行配置,结构简单、清晰易懂,同时支持丰富的功能扩展,包括自定义图标、服务分组、搜索栏、天气组件、Docker容器状态等。只需将配置文件放入指定目录并重新加载页面,即可立即生效。对于NAS用户来说,Homepage可以作为系统的“可视化总控制台”,极大提升使用效率。

0x02 部署
本人打算在飞牛NAS上进行部署,为了尽可能的减少对系统环境的污染,将使用docker的方式进行。首先先生成docker compose文件存放目录,目录名为homepage。

然后创建docker-compose.yml文件,文件内容如下,HOMEPAGE_ALLOWED_HOSTS参数需要修改成自己用来访问的域名或IP,多个链接用,号分隔,这里新增了本地图标、本地图片,图标、图片只有在services.yaml中会用到,只用映射。
version: "3.9"
services:
homepage:
#image: ghcr.io/gethomepage/homepage:latest
image: ghcr.nju.edu.cn/gethomepage/homepage:latest
container_name: homepage
ports:
- 3000:3000
volumes:
- ./config:/app/config # Homepage的所有配置文件
- ./icons:/app/public/icons # 本地图标
- ./images:/app/public/images # 本地图片
- /var/run/docker.sock:/var/run/docker.sock:ro # 读取docker服务运行信息
environment:
HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # 允许访问的域名
PUID: 1000
PGID: 1000
TZ: "Asia/Shanghai"
restart: always # 容器崩溃后自动重启
我这里,为了解决端口冲突将宿主端口修改为10001,所以 HOMEPAGE_ALLOWED_HOSTS设置为 192.168.1.100:10001,构建好后访问 http://192.168.1.100:10001,到这里,部署过程已经完成。

0x03 个性化配置
由于Homepage的页面布局依赖YAML文件,YAML的全称是“YAML Ain't Markup Language”(YAML不是标记语言)。它是一种人类可读的数据序列化格式,是JSON的超集。非常适合用于配置文件,易于读写。支持列表和对象等复杂数据类型。缩进很重要。因此安装完成后,会自动在映射的路径中生成各类配置文件。
- settings.yaml:设置
- bookmarks.yaml:书签
- docker.yaml:Docker容器
- kubernetes.yaml:kubernetes容器
- proxmox.yaml:Proxmox虚拟化平台
- services.yaml:服务
- widgets.yaml:小组件
- custom.css:自定义CSS
- custom.js: 自定义JavaScript
界面配置参考官方操作文档。