Homepage 是一个现代化、高度可定制的应用程序仪表板,支持Docker和100多种服务API集成。它提供快速、安全、美观的方式来组织和访问您的所有服务和信息。
主要功能
- 快速加载:静态生成的网站,提供即时加载速度
- 安全代理:所有API请求都经过代理,隐藏API密钥
- Docker集成:容器状态监控和基于标签的自动服务发现
- 丰富集成:支持100多种服务集成,包括所有流行的自托管应用
- 多语言支持:支持40多种语言的完整国际化
- 服务书签:添加自定义链接到首页
- 信息小部件:天气、时间、日期、搜索等实用工具
服务集成
- 媒体服务:Plex、Jellyfin、Emby等媒体服务器
- 下载工具:Transmission、qBittorrent、Deluge等
- *arr应用:Radarr、Sonarr、Lidarr、Bazarr等自动化工具
- 网络工具:Ombi、Tautulli、Jackett、NZBGet、SABnzbd等
- 系统监控:支持各种系统和服务状态监控
- 自定义API:支持自定义API集成
技术特性
- 前端框架:Next.js(React)
- 样式系统:Tailwind CSS
- 配置方式:YAML文件配置
- 容器支持:原生Docker支持,多架构镜像
- API代理:内置API代理确保安全性
- 静态生成:构建时生成静态页面
部署要求
- 运行环境:Node.js 18+ 或 Docker
- 架构支持:AMD64、ARM64
- 存储需求:配置文件存储,需求较小
- 网络要求:访问各种服务API的网络连接
- 可选依赖:Docker socket(用于容器集成)
安全考虑
- 反向代理:建议部署在带认证的反向代理后面
- API安全:所有API请求都经过代理处理
- 无认证层:本身不包含认证功能,需要外部认证
- SSL支持:建议使用HTTPS部署
Docker 部署示例
基础部署
version: "3.3"
services:
homepage:
image: ghcr.io/gethomepage/homepage:latest
container_name: homepage
ports:
- 3000:3000
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro # Docker 集成(可选)
- ./config:/app/config # 本地配置目录
- ./images:/app/public/images # 本地图片目录
restart: unless-stopped
高级部署配置
version: "3.3"
services:
homepage:
image: ghcr.io/gethomepage/homepage:latest
container_name: homepage
environment:
PUID: 1000
PGID: 1000
ports:
- 3000:3000
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./config:/app/config
- ./images:/app/public/images
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.routers.homepage.rule=Host(`homepage.example.com`)"
- "traefik.http.routers.homepage.tls=true"
- "traefik.http.routers.homepage.tls.certresolver=letsencrypt"
配置示例
服务配置 (services.yaml)
- Web 服务:
- Nextcloud:
href: https://nextcloud.example.com
description: 个人云存储
icon: nextcloud.png
widget:
type: nextcloud
url: https://nextcloud.example.com
username: admin
password: password
- 媒体服务:
- Jellyfin:
href: https://jellyfin.example.com
description: 媒体服务器
icon: jellyfin.png
widget:
type: jellyfin
url: https://jellyfin.example.com
key: your-api-key
- Transmission:
href: https://transmission.example.com
description: BT 下载器
icon: transmission.png
widget:
type: transmission
url: https://transmission.example.com
username: admin
password: password
小部件配置 (widgets.yaml)
- logo:
icon: https://raw.githubusercontent.com/gethomepage/homepage/main/docs/assets/light_squircle%402x.png
- search:
provider: google
target: _blank
- greeting:
text_size: xl
text: "欢迎回来!"
- datetime:
text_size: xl
format:
timeStyle: short
dateStyle: short
hourCycle: h23
- weather:
label: 北京
latitude: 39.9042
longitude: 116.4074
provider: openweathermap
apiKey: your-api-key
- resources:
cpu: true
memory: true
disk: /
expanded: true
label: 系统资源
书签配置 (bookmarks.yaml)
- 开发工具:
- GitHub:
- href: https://github.com
icon: github.png
- Docker Hub:
- href: https://hub.docker.com
icon: docker.png
- 社交媒体:
- Twitter:
- href: https://twitter.com
icon: twitter.png
- Reddit:
- href: https://reddit.com
icon: reddit.png
高级特性
Docker 标签自动发现
# 容器标签示例
services:
jellyfin:
image: jellyfin/jellyfin
labels:
- homepage.group=媒体服务
- homepage.name=Jellyfin
- homepage.icon=jellyfin.png
- homepage.href=http://localhost:8096
- homepage.description=媒体服务器
- homepage.widget.type=jellyfin
- homepage.widget.url=http://localhost:8096
- homepage.widget.key=your-jellyfin-token
自定义主题
/* custom.css */
:root {
--color-50: 250 250 249;
--color-100: 245 245 244;
--color-200: 231 229 228;
--color-300: 214 211 209;
--color-400: 168 162 158;
--color-500: 120 113 108;
--color-600: 87 83 78;
--color-700: 68 64 60;
--color-800: 41 37 36;
--color-900: 28 25 23;
}
自定义 JavaScript
// custom.js
document.addEventListener('DOMContentLoaded', function() {
// 自定义功能实现
console.log('Homepage 已加载完成');
});
支持的服务集成
媒体管理
- Plex/Jellyfin/Emby:媒体服务器状态和统计
- Tautulli:Plex 活动监控
- Ombi/Overseerr:媒体请求管理
下载工具
- qBittorrent/Transmission/Deluge:BT 下载状态
- SABnzbd/NZBGet:Usenet 下载监控
- Jackett/Prowlarr:种子索引器状态
Arr 家族
- Sonarr/Radarr/Lidarr:媒体自动化管理
- Bazarr:字幕管理
- Readarr:电子书管理
系统监控
- Proxmox:虚拟化平台监控
- Unraid:NAS 系统监控
- pfSense/OPNsense:防火墙状态
云存储
- Nextcloud/ownCloud:个人云存储
- Seafile:文件同步服务
网络工具
- Pi-hole:DNS 广告拦截
- AdGuard Home:网络广告拦截
- Wireguard:VPN 服务状态
容器管理
- Portainer:Docker 管理界面
- Watchtower:容器自动更新
定制选项
主题定制
- 内置主题:多种预设主题可选
- 自定义 CSS:完全自定义样式
- 图标支持:支持本地图标和在线图标
- 布局控制:灵活的网格布局系统
国际化支持
- 40+ 语言:完整的多语言支持
- RTL 支持:支持从右到左的语言
- 日期格式:本地化的日期时间格式
- 数字格式:本地化的数字显示格式
响应式设计
- 移动适配:完美的移动设备支持
- 触摸友好:触摸设备优化交互
- 多分辨率:适配各种屏幕尺寸
- PWA 支持:可安装为 PWA 应用
性能优化
静态生成
- 构建时优化:静态页面生成
- CDN 友好:支持 CDN 部署
- 缓存策略:合理的缓存机制
- 懒加载:图片和组件懒加载
资源管理
- 图片优化:自动图片优化和压缩
- 代码分割:按需加载代码
- API 代理:内置 API 代理减少延迟
- 本地存储:配置本地缓存
安全考虑
访问控制
- 反向代理认证:建议配合认证代理使用
- API 密钥保护:所有 API 请求代理处理
- CORS 配置:合理的跨域访问控制
- CSP 策略:内容安全策略保护
最佳实践
- HTTPS 部署:强制使用 HTTPS
- 网络隔离:合理的网络访问控制
- 定期更新:保持软件版本更新
- 配置备份:定期备份配置文件
适用场景
个人用户
- 家庭实验室:统一管理各种自托管服务
- 媒体中心:集中访问媒体服务
- 生产力工具:快速访问工作相关服务
小型团队
- 开发团队:统一的开发工具访问入口
- 运维监控:集中监控各种服务状态
- 文档中心:整合各种文档和工具
企业应用
- 内部门户:企业内部服务门户
- 监控仪表板:系统和服务监控中心
- 快速导航:常用工具和服务导航
Homepage 是自托管爱好者的理想选择,它不仅提供了美观的界面,还具备强大的集成能力和高度的可定制性。无论是个人用户还是小型团队,都能从中受益,创建属于自己的专属服务中心。