
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
一个自托管的现代化仪表板,用于组织和监控您的常用链接。基于 React、Express 和 Tailwind CSS 构建。
HomeLab 结合了现代化的链接管理仪表板与强大的服务器管理工具,提供一站式的家庭实验室管理解决方案。通过直观的界面,用户可以组织链接、监控服务健康状态、管理网络设备及远程访问服务器,同时支持多用户协作和高可用部署。
HomeLab 适用于以下场景:
Docker(推荐)
bashdocker run -d \ -p 80:3000 \ -v $(pwd)/data:/app/data \ -e APP_URL=http://localhost:80 \ -e SESSION_SECRET=your-random-secret \ -e ADMIN_USERNAME=admin \ -e ADMIN_PASSWORD=changeme \ docker.xuanyuan.run/alvesd/homelab:latest
关于主机网络的说明: Wake-On-LAN 现在依赖手动条目或 UniFi 控制器进行发现,不需要
arp-scan。默认的-p 80:3000端口映射已足够。仅当您希望 WOL 魔法包直接在主机的 LAN 上广播而非通过 Docker 的 NAT 桥接时,主机网络才有用。
然后打开 http://localhost:80%E3%80%82
Docker Compose
在项目目录中创建 docker-compose.yml 文件:
yamlversion: '3.8' services: homelab: image: docker.xuanyuan.run/alvesd/homelab:latest ports: - "80:3000" environment: NODE_ENV: production APP_URL: http://localhost:80 SESSION_SECRET: your-random-secret-here-change-in-production ADMIN_USERNAME: admin ADMIN_PASSWORD: admin # 可选: # GOOGLE_CLIENT_ID: your-client-id # GOOGLE_CLIENT_SECRET: your-client-secret # GEMINI_API_KEY: your-key volumes: - ./data:/app/data restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3000"] interval: 30s timeout: 10s retries: 3 start_period: 10s
然后运行:
bashdocker-compose up -d
| 变量 | 是否必需 | 默认值 | 描述 |
|---|---|---|---|
APP_URL | 是 | http://localhost:80 | 应用托管的完整 URL(用于 OAuth 重定向) |
SESSION_SECRET | 是 | changeme | 用于签名会话 cookie 的长随机字符串 |
ADMIN_USERNAME | 否 | admin | 引导管理员用户名(仅在首次运行时使用) |
ADMIN_PASSWORD | 否 | admin | 引导管理员密码(仅在首次运行时使用) |
GEMINI_API_KEY | 否 | — | 启用 AI 搜索、后台生成和智能组织。也可在运行时在管理员设置中设置 |
GOOGLE_CLIENT_ID | 否 | — | 启用 Google 登录 |
GOOGLE_CLIENT_SECRET | 否 | — | 当设置 GOOGLE_CLIENT_ID 时必需 |
CLUSTER_ENABLED | 否 | false | 启用跨多个节点的 Active/Active 高可用集群模式 |
CLUSTER_NODE_ID | 是(如果启用集群) | — | 此节点的唯一字母数字标识符(例如 node1) |
CLUSTER_PEERS | 是(如果启用集群) | — | 逗号分隔的对等节点基本 URL 列表(例如 http://node2:80) |
CLUSTER_SECRET | 是(如果启用集群) | — | 所有节点共享的对称密钥,用于复制和代理认证 |
CLUSTER_HEARTBEAT_MS | 否 | 5000 | 节点心跳间隔,用于领导者状态检查 |
CLUSTER_LEASE_MS | 否 | 15000 | 租约持续时间,超过此时间无响应的领导者将被视为失效 |
CLUSTER_REPLICATE_MS | 否 | 10000 | 尽力而为的 db.json 快照复制到追随者的时间间隔 |
要启用 Google 登录:
APP_URL 添加到已授权的 JavaScript 来源{APP_URL}/auth/google/identity/callback 添加到已授权的重定向 URIGOOGLE_CLIENT_ID 和 GOOGLE_CLIENT_SECRET管理员必须预先创建具有匹配 Google 电子邮件的用户,然后用户才能使用 Google 登录。在设置 > 用户中为用户关联 Google 电子邮件。
服务器以可配置的间隔对所有链接执行后台 HTTP 健康检查。
全局设置(管理员)
在设置 > 全局中配置:
链接级设置
添加或编辑链接时配置:
https://api.example.com/health 而非主页面 URL)工作原理
正常运行时间仪表板
从左上角的汉堡菜单打开正常运行时间页面,查看所有受监控链接的完整 SLA 视图:
从左上角的汉堡菜单发现并唤醒 LAN 上的机器。
工作原理
data/db.json 中,对所有用户可见要求
-p 80:3000 映射适用于大多数设置,因为唤醒调用会遍历主机的网络堆栈。仅当 Docker NAT 吞噬广播流量时才使用 --network host多子网 WOL 代理
要唤醒其他子网(独立 VLAN、远程站点)上的机器,在该子网内的主机上以无状态 WOL 代理模式运行相同镜像。代理自动向中央 homelab 注册并转发 /wake 魔法包调用。
bashdocker run -d \ -e WOL_AGENT_MODE=true \ -e WOL_AGENT_TOKEN=long-random-string \ -e HOMEPAGE_URL=http://homelab.lan:80 \ docker.xuanyuan.run/alvesd/homelab:latest
或在 docker-compose.yml 中(参见 repo 中 compose 文件的注释 wol-agent 块):
yamlwol-agent: image: docker.xuanyuan.run/alvesd/homelab:latest environment: WOL_AGENT_MODE: "true" WOL_AGENT_TOKEN: "long-random-string" HOMEPAGE_URL: "http://homelab.lan:80" # 可选: # WOL_AGENT_PORT: "9999" # WOL_AGENT_NAME: "garage-rack" restart: unless-stopped
必需的环境变量:
WOL_AGENT_MODE=true — 将镜像切换到无头代理模式WOL_AGENT_TOKEN=… — homelab 用于调用代理的 Bearer 令牌HOMEPAGE_URL=… — 自注册地址(例如 http://192.168.1.10:80)可选的环境变量:
WOL_AGENT_PORT — 默认为 9999WOL_AGENT_NAME — UI 中显示的标签;默认为 OS 主机名代理在启动时将其名称、IP、端口、令牌、子网和注册的 homelab URL 打印到容器日志。它每 5 分钟发送一次心跳;UI 在约 12 分钟未收到心跳后将代理显示为离线。代理是无状态的 — 不需要卷。
从汉堡菜单访问内置浏览器终端。
功能
/bin/bash)x11vnc、TigerVNC、macOS 屏幕共享、Windows UltraVNC、Proxmox/ESXi 控制台等。与 SSH 共享相同的保存连接列表、组侧边栏和图标预设。端口默认为 5901,可自由编辑
认证
如果目标服务器需要 SSH 密钥,您可以通过映射卷将它们挂载到 Docker 容器中:
bash-v ~/.ssh/id_ed25519:/root/.ssh/id_ed25519:ro
或者,如果主机网络上启用了 SSH Agent 转发,您也可以使用该功能。
VNC 密码与 SSH 密码一起以 AES-256-GCM 加密存储在 db.json 中。明文密码仅在 RFB 握手前通过一次性、带票据的 WebSocket 传递给浏览器 — 绝不会出现在 URL 查询字符串中。
从汉堡菜单的 Proxmox 页面管理一个或多个 Proxmox VE 集群。
功能
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务