- 家里或小团队跑了十几二十个自托管服务(*arr 套件、监控、网盘、CI),需要一页看到全部状态:它的 service widget 直接打各服务 API 拿健康度和计数,比逐个开标签页或自己写静态书签页省事。
- 不想把 API key 散在前端:它把所有后端请求走服务端代理,浏览器只拿到渲染后的结果,这点是纯静态 dashboard 做不到的。
- 容器频繁增删的环境:挂 docker.sock 后靠 label 自动发现服务,新起一个容器打个标签就出现在首页,不用回头改配置。
- 需要给非技术用户(家人、同事)一个入口:主题和布局可调,能藏掉不想暴露的服务。

homepage
gethomepageGPL-3.0活跃维护 有专家点评高度可定制的自托管起始页和应用仪表盘,通过 Docker 和服务 API 集成,把常用服务入口和运行状态集中展示在一个页面上。
A highly customizable homepage (or startpage / application dashboard) with Docker and service API integrations.
专家点评
上手难度:进阶更新于 2026-11-11自托管服务的统一入口页,用 YAML 或 Docker 标签把散落的面板收成一张
适用场景
踩坑
- 必须设 HOMEPAGE_ALLOWED_HOSTS,不设或写错域名会直接访问异常;换域名、加反代、内网外网双入口时都要同步改,这是最常见的启动即失败点。
- 挂载 docker.sock 等于把宿主机 Docker 控制面交给这个容器,README 自己要求前面加认证反代或 VPN;只在内网裸跑、又暴露到公网的部署方式会撞上。
- issue 里反复出现的是 widget 覆盖缺口(Deluge、audiobookshelf、Sonarr 日历、CPU 温度、uptime 等),说明内置集成虽多但长尾服务得自己写 custom API widget;另外有一条 semver 解析报错的 bug 讨论量不小,容器镜像 tag 策略异常时可能碰到。
同类对比
同类可看 Homarr、Dashy、Heimdall;如果核心诉求只是静态书签页、不需要服务端代理和 API 集成,Dashy 这类纯前端方案部署面更小。
docker run --name homepage -e HOMEPAGE_ALLOWED_HOSTS=gethomepage.dev -p 3000:3000 -v /path/to/config:/app/config -v /var/run/docker.sock:/var/run/docker.sock:ro --restart unless-stopped ghcr.io/gethomepage/homepage:latestREADME 未说明具体硬件要求;仅说明提供 AMD64 和 ARM64 架构的镜像。
项目说明
由 README 自动翻译提炼高度可定制的应用仪表盘,用 YAML 或 Docker 标签聚合自托管服务与书签
高度可定制的自托管起始页和应用仪表盘,通过 Docker 和服务 API 集成,把常用服务入口和运行状态集中展示在一个页面上。
核心能力
- 用 YAML 文件或 Docker 标签自动发现并配置服务
- 代理所有后端 API 请求,隐藏 API 密钥
- 内置 100+ 服务集成与天气、时间、搜索等信息组件
- 支持自定义主题、CSS/JS 与布局
- 提供 AMD64 与 ARM64 镜像,支持 40+ 语言
容易踩的坑
必须设置 HOMEPAGE_ALLOWED_HOSTS,否则可能无法正常访问;需先创建本地配置目录并挂载到 /app/config;Docker 集成需挂载 docker.sock,且对外暴露时应置于带认证的反向代理或 VPN 之后。
- v2.7.0最新正式版2026-10-23 · 2026-10-23 15:10 UTC
What's Changed
🚀 Features
- Feature: add NetBird service widget (#7260)
🐛 Fixes
- Fix: prometheusmetric renders only the four metrics it queries (#7262)
🧰 Maintenance
- Chore: update base image to node 24 (#7277) @shamoon
- Chore: Remove k3d development setup (#7276) @shamoon
- Chore(deps): Bump ip-address from 10.7.2 to 10.7.4 (#7274) @dependabot[bot]
- Chore(deps): Bump next from 16.3.8 to 16.4.1 (#7275) @dependabot[bot]
- Chore(deps): Bump astral-sh/setup-uv from 10.2.0 to 10.3.0 (#7273) @dependabot[bot]
- Chore(deps): Bump follow-redirects from 1.16.0 to 1.16.1 (#7269) @dependabot[bot]
- Chore(deps): Bump vite from 8.2.1 to 8.3.4 (#7267) @dependabot[bot]
- Chore(deps): Bump js-yaml from 5.4.3 to 5.5.0 (#7268) @dependabot[bot]
- Chore: migrate nextjs middleware to proxy (#7264) @shamoon
🌐 Translations
- New Crowdin translations by GitHub Action (#7259) @github-actions[bot]
- Feature: add NetBird service widget (#7260) @tobee89
- v2.6.02026-10-17 · 2026-10-17 05:33 UTC
查看更新说明
What's Changed
🐛 Fixes
- Refactor: auth architecture (#7256) @shamoon
- Fix: preserve dollar sequences in environment and file secrets (#7242) @anirudhqwerty
🔒 Security
- Resolve GHSA-qxcr-4rv3-v23r
🧰 Maintenance
- Refactor: auth architecture (#7256) @shamoon
- Chore(deps): Bump release-drafter/release-drafter/autolabeler from 7.8.0 to 7.10.0 (#7248) @dependabot[bot]
- Chore(deps): Bump release-drafter/release-drafter from 7.8.0 to 7.10.0 (#7250) @dependabot[bot]
- Chore(deps): Bump actions/setup-node from 7.0.0 to 7.1.0 (#7249) @dependabot[bot]
- Chore: send Gitea/Forgejo API key as Authorization header (#7245) @Blacks-Army
🌐 Translations
- New Crowdin translations by GitHub Action (#7241) @github-actions[bot]
- v2.5.02026-10-10 · 2026-10-10 18:31 UTC
查看更新说明
What's Changed
🚀 Features
- Chorehancement: add fileflows widget v2 for 26.10 breaking changes (#7239) @shamoon
- Chorehancement: limit log size + rotate (#7218) @shamoon
- Feature: Bookorbit service widget (#7202) @shamoon
- Feature: qui widget (#7192) @Kisnov
- Feature: feeds widget (#7170) @shamoon
- Feature: Plex mono font support, card + block styles (#7169) @shamoon
- Feature: customapi info widget (#7168) @shamoon
🐛 Fixes
- Fix: use x-total-count header for correct gitea totals (#7227) @shamoon
- Fix: ensure correct relative dates formatter uses calendar days (#7174) @shamoon
🧰 Maintenance
- Chore: remove custom Vitest JSX esbuild config (#7234) @shamoon
- Chore(deps): Bump source-map-js from 1.2.1 to 1.2.2 (#7229) @dependabot[bot]
- Chore(deps): Bump sharp from 0.35.4 to 0.35.5 (#7228) @dependabot[bot]
- Chore(deps): Bump http-cache-semantics from 4.2.0 to 4.3.0 (#7231) @dependabot[bot]
- Chore(deps): Bump js-yaml from 5.4.2 to 5.4.3 (#7230) @dependabot[bot]
- Chore(deps): Bump next from 16.3.6 to 16.3.8 (#7232) @dependabot[bot]
- Chore(deps): Bump release-drafter/release-drafter/autolabeler from 7.6.0 to 7.8.0 (#7226) @dependabot[bot]
- Chore(deps): Bump release-drafter/release-drafter from 7.6.0 to 7.8.0 (#7225) @dependabot[bot]
- Chore: handle cloudflare breaking API change dropping connections (#7217) @shamoon
- Chore(deps): Bump crowdin/github-action from 3.1.0 to 3.3.0 (#7204) @dependabot[bot]
- Chore(deps): Bump astral-sh/setup-uv from 10.1.0 to 10.2.0 (#7203) @dependabot[bot]
- Chore(deps): Bump @grpc/grpc-js from 1.14.4 to 1.14.5 (#7212) @dependabot[bot]
- Chore(deps): Bump next from 16.3.3 to 16.3.6 (#7213) @dependabot[bot]
- Chore(deps): Bump brace-expansion from 1.1.18 to 1.1.21 (#7211) @dependabot[bot]
- Chore(deps): Bump react-i18next from 17.0.12 to 17.0.15 (#7207) @dependabot[bot]
- Chore(deps): Bump the react group across 1 directory with 2 updates (#7205) @dependabot[bot]
- Chore(deps): Bump systeminformation from 5.33.1 to 5.33.13 (#7206) @dependabot[bot]
- Chore(deps): Bump i18next from 26.3.6 to 26.4.2 (#7209) @dependabot[bot]
- Chore(deps-dev): Bump prettier from 3.9.6 to 3.9.9 (#7208) @dependabot[bot]
- Chore(deps): Bump undici from 8.10.0 to 8.11.2 (#7200) @dependabot[bot]
- Chore(deps): Bump ip-address from 10.5.0 to 10.7.2 (#7199) @dependabot[bot]
- Chore(deps): Bump crowdin/github-action from 3.0.2 to 3.1.0 (#7183) @dependabot[bot]
- Chore(deps): Bump codecov/codecov-action from 7.0.0 to 7.1.1 (#7184) @dependabot[bot]
- Chore(deps): Bump docker/build-push-action from 7.3.0 to 7.4.0 (#7182) @dependabot[bot]
- Chore(deps): Bump docker/setup-buildx-action from 4.3.0 to 4.4.1 (#7185) @dependabot[bot]
- Chore(deps): Bump docker/setup-qemu-action from 4.3.0 to 4.4.0 (#7181) @dependabot[bot]
- Performance: reduce json data transformations (#7175) @shamoon
- Chore(deps): Bump astral-sh/setup-uv from 10.0.1 to 10.1.0 (#7156) @dependabot[bot]
- Chore(deps): Bump crowdin/github-action from 3.0.1 to 3.0.2
- v2.4.02026-09-17 · 2026-09-17 07:17 UTC
查看更新说明
What's Changed
🚀 Features
- Enhancement: Add bearer authentication to whatsupdocker widget (#7134) @benbelov
🐛 Fixes
- Fix: prevent mcp operations losing var placeholders (#7144) @shamoon
- Fix: better handle PeaNUT missing data (#7139) @shamoon
🧰 Maintenance
- Chore(deps): Bump js-yaml from 5.4.1 to 5.4.2 (#7147) @dependabot[bot]
- Chore(deps): Bump sharp from 0.35.3 to 0.35.4 (#7146) @dependabot[bot]
- Chore(deps): Bump crowdin/github-action from 3.0.0 to 3.0.1 (#7128) @dependabot[bot]
- Chore(deps): Bump actions/deploy-pages from 5.0.0 to 5.0.1 (#7127) @dependabot[bot]
- Chore(deps): Bump docker/setup-qemu-action from 4.2.0 to 4.3.0 (#7129) @dependabot[bot]
- Chore(deps): Bump js-yaml from 5.4.0 to 5.4.1 (#7119) @dependabot[bot]
🌐 Translations
- New Crowdin translations by GitHub Action (#7120) @github-actions[bot]
- v2.3.02026-09-09 · 2026-09-09 21:54 UTC
查看更新说明
What's Changed
🚀 Features
- Fixhancement: use ghostfolio baseCurrency as default for net worth (#7116) @shamoon
- Tweakhancement: handle QL selection without hover (#7105) @shamoon
- Enhancement: render more docker states (#7099) @shamoon
- Performance: use bulk request for docker stats (#7098) @shamoon
- Enhancement: allow OIDC auto-login (#7096) @shamoon
- Performance: fetch all docker container statuses in one request (#7092) @DaddyBoard
🐛 Fixes
- Fix: dont fire search on empty field (#7101) @shamoon
- Fix: handle literal null from crowdsec api alerts (#7088) @shamoon
🧰 Maintenance
- Chore(deps): Bump crowdin/github-action from 2.17.1 to 3.0.0 (#7091) @dependabot[bot]
🌐 Translations
- New Crowdin translations by GitHub Action (#7090) @github-actions[bot]
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Features
With features like quick search, bookmarks, weather support, a wide range of integrations and widgets, an elegant and modern design, and a focus on performance, Homepage is your ideal start to the day and a handy companion throughout it.
- Fast - Cached dashboard data and optimized assets keep page loads quick.
- Secure - All API requests to backend services are proxied, keeping your API keys hidden. Constantly reviewed for security by the community.
- For Everyone - Images built for AMD64, ARM64.
- Full i18n - Support for over 40 languages.
- Service & Web Bookmarks - Add custom links to the homepage.
- Docker Integration - Container status and stats. Automatic service discovery via labels.
- Service Integration - Over 100 service integrations, including popular starr and self-hosted apps.
- Information & Utility Widgets - Weather, time, date, search, and more.
- And much more...
Docker Integration
Homepage has built-in support for Docker, and can automatically discover and add services to the homepage based on labels. See the Docker Service Discovery page for more information.
Service Widgets
Homepage also has support for hundreds of 3rd-party services, including all popular *arr apps, and most popular self-hosted apps. Some examples include: Radarr, Sonarr, Lidarr, Bazarr, Ombi, Tautulli, Plex, Jellyfin, Emby, Transmission, qBittorrent, Deluge, Jackett, NZBGet, SABnzbd, etc. As well as service integrations, Homepage also has a number of information providers, sourcing information from a variety of external 3rd-party APIs. See the Service page for more information.
Information Widgets
Homepage has built-in support for a number of information providers, including weather, time, date, search, glances and more. System and status information presented at the top of the page. See the Information Providers page for more information.
Customization
Homepage is highly customizable, with support for custom themes, custom CSS & JS, custom layouts, formatting, localization and more. See the Settings page for more information.
Getting Started
For configuration options, examples and more, please check out the homepage documentation.
Security Notice 🔒
Please note that when using features such as widgets, Homepage can access personal information (for example from your home automation system). To keep your information private, if Homepage is reachable from any untrusted network, it:
- must sit behind a reverse proxy (and/or VPN) that enforces authentication, TLS, and strictly validates Host headers.
- An optional built-in OIDC login flow or simple password login is available (opt-in) offering a simple “authenticated or not” guard.
With Docker
Using docker compose:
services:
homepage:
image: ghcr.io/gethomepage/homepage:latest
container_name: homepage
environment:
HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
PUID: 1000 # optional, your user id
PGID: 1000 # optional, your group id
ports:
- 3000:3000
volumes:
- /path/to/config:/app/config # Make sure your local config directory exists
- /var/run/docker.sock:/var/run/docker.sock:ro # optional, for docker integrations
restart: unless-stopped
or docker run:
docker run --name homepage \
-e HOMEPAGE_ALLOWED_HOSTS=gethomepage.dev \
-e PUID=1000 \
-e PGID=1000 \
-p 3000:3000 \
-v /path/to/config:/app/config \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
--restart unless-stopped \
ghcr.io/gethomepage/homepage:latest
From Source
First, clone the repository:
git clone https://github.com/gethomepage/homepage.git
Then install dependencies and build the production bundle:
pnpm install
pnpm build
If this is your first time starting, copy the src/skeleton directory to config/ to populate initial example config files.
Finally, run the server in production mode:
HOMEPAGE_ALLOWED_HOSTS=gethomepage.dev:1234 pnpm start
Configuration
Please refer to the homepage documentation website for more information. Everything you need to know about configuring Homepage is there. Please read everything carefully before asking for help, as most questions are answered there or are simple YAML configuration issues.
Development
Install NPM packages, this project uses pnpm (and so should you!):
pnpm install
Start the development server:
pnpm dev
Open http://localhost:3000 to start.
This is a Next.js application, see their documentation for more information.
Documentation
The homepage documentation is available at https://gethomepage.dev/.
Homepage uses Zensical for documentation. To run the documentation locally, first install the dependencies:
uv sync
Then run the development server:
uv run zensical serve # or build, to build the static site
Support & Suggestions
If you have any questions, suggestions, or general issues, please start a discussion on the Discussions page.
Troubleshooting
In addition to the docs, the troubleshooting guide can help reveal many basic config or network issues. If you're having a problem, it's a good place to start.
Contributing & Contributors
Contributions are welcome! Please see the CONTRIBUTING.md file for more information.
Thanks to the over 200 contributors who have helped make this project what it is today!
Especially huge thanks to @shamoon, who has been the backbone of this community from the very start.