前言
自建服务一旦从两三个增加到十几个,最先失控的往往不是服务器性能,而是入口。NAS、下载工具、监控面板、路由器后台、博客、智能家居各有一套地址和端口,时间一长,浏览器书签越存越多,真正要打开某个服务时还是得重新找。
Heimdall解决的不是"再增加一个服务",而是把已有服务重新整理到一个页面里。你可以给每个应用配置名称、图标和链接,把原本分散的入口集中到一个仪表板上,需要时直接点击跳转,不必再单独记忆每个地址。
这篇使用Windows + Docker部署Heimdall,先完成容器启动和本地访问,再实际添加服务入口、调整基础设置、使用搜索栏和用户管理功能,看看它作为自建服务首页到底怎么用。
如果你已经有一批长期运行的Web服务,这种"先整理入口"的思路会比继续往书签里塞地址更清楚:服务本身不用迁移,只需要把常用入口集中起来。
后半段继续加入cpolar,让这个原本只在局域网里打开的导航页也能从其他设备访问。整篇真正跑的是Docker部署Heimdall → 添加自建服务入口 → 统一导航 → 外部设备继续访问这条链,重点是把零散服务整理成一个长期可用的个人入口页。

1.什么是Heimdall?
Heimdall是一款面向家庭服务器(Homelab)、NAS和本地网络环境的开源Web导航仪表板。
它更像一个统一入口页:把原本分散在不同地址、端口和书签里的服务集中到同一个界面里,再通过图标和分类快速进入。下面看一下它主要能做什么:
一站式服务导航
Heimdall 是面向家庭服务器、NAS、内网环境的开源 Web 导航监控仪表盘,可集中管理内网各类自建服务入口,做统一的个人服务门户。
| 分类 | 具体说明 |
|---|---|
| 一站式服务导航 | 集中收纳 Jellyfin、Home Assistant、路由器后台等内网服务链接,分类图文展示,替代零散浏览器书签 |
| 三类应用集成 | 1. 通用应用:自定义名称、链接、图标做快捷入口2. 基础应用:系统预置应用,输入名称自动补全图标信息3. 增强应用:对接 API,首页实时展示服务运行状态 |
| 自定义易用性 | 支持换背景、配色、图标、分组管理,全部配置通过 Web 界面操作,无需编写配置文件 |
| 部署 & 安全 | 依托 Docker(linuxserver/heimdall 镜像)部署,挂载配置目录即可运行;2.5.4 及更早版本存在 XSS 漏洞,需及时更新版本 |
2.前提条件
本文为Docker容器化部署教程,所有服务依托Docker运行,部署前需完整安装并配置好Docker环境,Docker相关前置要求如下:
2.1 系统环境适配Docker
- 系统为64位Windows 10 1903版本及以上 / Windows 11全版本;32位系统、Win7/Win8不支持新版Docker Desktop。
- CPU虚拟化功能在BIOS/UEFI 开启(Intel VT-x / AMD SVM),任务管理器CPU页面虚拟化状态显示已启用。
- 系统已开启「适用于Linux的Windows子系统」「虚拟机平台」,安装WSL2 Linux内核更新包。
2.2 硬件资源Docker最低标准
- 内存最低4GB,多容器部署推荐8GB及以上;
- 磁盘预留20GB以上空闲空间,优先SSD存储。
2.3 Docker安装步骤
- 前往Docker官网下载Docker Desktop Windows安装包;
- 双击安装程序,勾选WSL2后端模式,完成安装后重启电脑;
- 启动Docker Desktop,等待WSL2虚拟机初始化完成,右下角Docker图标显示运行正常。
2.4 Docker基础配置
- 配置国内镜像加速器,解决镜像拉取慢、超时问题;
- 放行本地所需服务端口,关闭占用虚拟化的模拟器、虚拟机软件,避免冲突;
- 全程操作使用管理员权限运行终端与Docker程序。
2.5 Docker环境校验
打开PowerShell执行以下命令,无报错即代表Docker环境就绪:
shell
docker --version
docker run hello-world
3.安装Heimdall
以管理员身份打开 Windows PowerShell 终端,确认 Docker Desktop 已正常启动、镜像加速器配置完成,再执行后续容器部署命令。
Docker 一键部署完整指令
docker run -d \
--name=heimdall \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Asia/Shanghai \
-p 8088:80 \
-p 8443:443 \
-v /opt/heimdall:/config \
--restart unless-stopped \
linuxserver/heimdall

参数说明表
| 参数项 | 作用解释 |
|---|---|
-d |
容器后台静默运行 |
--name=heimdall |
给容器命名为 heimdall,方便后续日志查看、启停管理 |
PUID/PGID=1000 |
配置容器文件读写权限,和 linuxserver 镜像权限规范保持一致 |
TZ=Asia/Shanghai |
设置时区为上海,保证日志、后台时间准确 |
-p 8088:80 |
外网访问端口 8088 映射容器 Web 服务 80 端口(HTTP 访问) |
-p 8443:443 |
外网访问端口 8443 映射容器 443 端口(HTTPS 访问) |
-v /opt/heimdall:/config |
容器配置目录持久化挂载到宿主机,重装容器配置不会丢失 |
--restart unless-stopped |
Docker 启动时自动拉起容器,手动停止除外 |
部署后校验步骤
-
查看容器运行状态
docker ps | findstr heimdall
状态显示Up代表启动成功
-
查看启动日志排查异常(你此前遇到的应用列表超时、语法报错可通过该命令定位)
docker logs heimdall

浏览器访问:http://本机IP:8088 进入 Heimdall 后台初始化界面

4.使用Heimdall
首次进入Heimdall时,页面还是空的,需要先把自己常用的服务入口添加进去:

添加完成后,入口会出现在仪表板中:

点击对应图标,就可以直接进入这个服务:

点击设置,改基础配置:

打开搜索栏以后,首页会增加搜索入口:

搜索栏也可以直接调用搜索引擎。例如这里使用Google搜索cpolar,提交后会跳转到对应的搜索结果页面:


点击用户图标,来管理用户:

Heimdall在本地部署完成以后,当前入口仍然主要面向局域网。要是在公司、外地或者手机蜂窝网络下也想打开这张"服务首页",就还需要给它增加一个外部访问入口。
这里继续使用cpolar,把本地Heimdall页面映射到公网。Heimdall负责整理服务入口,cpolar负责让这个导航页可以从外部网络打开。
5.安装cpolar实现随时随地开发
5.1 什么是cpolar?
cpolar是一款安全高效的内网穿透工具,无需公网IP或复杂配置,只需一条命令,即可将本地服务器、Web服务或任意端口映射到公网,让你随时随地远程访问内网应用,特别适合开发调试、远程运维和应急部署等场景。
5.2 部署cpolar
cpolar 可以将你本地电脑中的服务(如 SSH、Web、数据库)映射到公网。即使你在家里或外出时,也可以通过公网地址连接回本地运行的开发环境。
❤️以下是安装cpolar步骤:
使用一键脚本安装命令:
shell
sudo curl https://get.cpolar.sh | sh

安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)
shell
sudo systemctl status cpolar

cpolar安装和成功启动服务后,在浏览器上输入虚拟机主机IP加9200端口即:【http://ip:9200】访问cpolar管理界面,使用cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:
打开浏览器访问本地9200端口,使用cpolar账户密码登录即可,登录后即可对隧道进行管理。

6.配置公网地址
登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理------创建隧道:
- 隧道名称:可自定义,本例使用了:Heimdall,注意不要与已有的隧道名称重复
- 协议:http
- 本地地址:8088
- 域名类型:随机域名
- 地区:选择China Top

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址,接下来就可以在其他电脑或者移动端设备(异地)上,使用地址访问。

访问成功。

7.保留固定公网地址
使用cpolar为其配置二级子域名,该地址为固定地址,不会随机变化。

点击左侧的预留,选择保留二级子域名,地区选择china Top,然后设置一个二级子域名名称,我使用的是Heimdall,大家可以自定义。填写备注信息,点击保留。

登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理------隧道列表,找到所要配置的隧道,点击右侧的编辑。

修改隧道信息,将保留成功的二级子域名配置到隧道中
- 域名类型:选择二级子域名
- Sub Domain:填写保留成功的二级子域名
- 地区: China Top
点击更新

更新完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的二级子域名名称。

最后,我们使用固定的公网地址在任意设备的浏览器中访问,可以看到成功访问的页面,这样一个永久不会变化的二级子域名公网网址即设置好了。

总结
这篇真正完成的是一件很简单但很实用的事:把原本分散在浏览器书签、IP地址和不同端口里的自建服务,重新集中到一个Heimdall页面里。Docker负责运行服务,Heimdall负责把这些入口整理成可点击的仪表板。
实际使用以后,它的价值也不在"多一个漂亮首页",而在于以后访问NAS、监控面板、路由器后台或其他自建应用时,不必再单独记忆每个地址。图标、分类、搜索和用户管理这些功能,都是围绕"更快找到服务"展开。
后半段加入cpolar以后,改变的是Heimdall这个入口页的访问范围。原本只能在局域网打开的导航页面,可以继续从手机、电脑或其他网络环境访问;固定二级子域名则更适合长期保存这个入口。
如果自建服务已经越来越多,Heimdall更适合被理解成一张"个人服务目录"。它不替代NAS、下载器、监控或智能家居本身,而是把这些系统重新放到同一个入口里,让日常访问和管理变得更有秩序。