Docker实战 | 在Docker环境下安装Heimdallr无状态密码管理器
Docker实战 | 在Docker环境下安装Heimdallr无状态密码管理器
一、Heimdallr介绍
1.1 Heimdallr项目简介
Heimdallr是一款基于哈希算法的无状态密码管理器与生成器。它摒弃了传统的数据库存储方式,用户只需牢记一个主密码,即可通过“主密码+网站标识”实时派生出全网各个网站的独立密码,彻底解决密码遗忘与多端同步的烦恼。
1.2 Heimdallr主要特点
- 无状态架构:无需任何数据库存储,从根本上杜绝了因服务器宕机或数据库泄露导致的密码丢失风险。
- 确定性派生:基于哈希算法实时生成密码,只要输入参数一致,生成的密码就永远相同,实现真正的跨设备免同步。
- 强制改密机制:内置版本号迭代功能,当网站要求定期修改密码时,只需调整版本号即可一键生成全新密码。
- 军工级安全:支持字母、数字及特殊符号的自由组合,最高可生成 128 位的高强度密码,满足极高的安全需求。
- 极简部署访问:支持 Docker 一键极速部署,部署完成后可通过手机或电脑浏览器随时随地生成密码。
1.3 项目地址
- Github项目地址:https://github.com/AMEST/Heimdallr
二、本次实践规划
2.1 本地环境规划
本次实践为个人测试环境,操作系统版本为 Ubuntu 24.04.2 LTS。
| hostname | IP地址 | 操作系统版本 | Docker版本 | 部署项目 | 备注 |
|---|---|---|---|---|---|
| jeven | 192.168.3.88 | Ubuntu 24.04.2 LTS | 28.5.0 | Heimdallr | 镜像版本v1.2.2 |
2.2 本次实践介绍
1.本次实践部署环境为个人测试环境,生产环境请谨慎;
2.在Docker环境下安装Heimdallr无状态密码管理器。
三、本地环境检查
3.1 检查Docker服务状态
检查Docker服务是否正常运行,确保Docker正常运行。
root@jeven:~# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: enabled)
Active: active (running) since Sun 2026-05-31 23:17:28 CST; 1 month 29 days ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 945 (dockerd)
Tasks: 117
Memory: 787.7M (peak: 1018.4M swap: 11.8M swap peak: 12.6M)
CPU: 58min 1.415s
CGroup: /system.slice/docker.service

3.2 检查Docker版本
检查Docker版本
root@jeven:~# docker -v
Docker version 28.5.0, build 887030f
3.3 检查docker compose 版本
检查Docker compose版本,确保2.0以上版本。
root@jeven:~# docker compose version
Docker Compose version v2.39.4
四、拉取Heimdallr镜像
下载DockDash镜像,使用的镜像版本为:
eluki/heimdallr-password-manager:v1.2.2。
root@jeven:~# docker pull eluki/heimdallr-password-manager:v1.2.2
v1.2.2: Pulling from eluki/heimdallr-password-manager
61ffccc6e275: Pull complete
cd9325c31137: Pull complete
4ac573bb1f6c: Pull complete
e1a65f01f534: Pull complete
45e0000624bf: Pull complete
4be1e66dce58: Pull complete
8d8af9465f22: Pull complete
4f4fb700ef54: Pull complete
Digest: sha256:fce2d724d416a31d3fa8c32dfde296058cdd4f4af092fff0fbb774410e52d501
Status: Downloaded newer image for eluki/heimdallr-password-manager:v1.2.2
docker.io/eluki/heimdallr-password-manager:v1.2.2

五、部署Heimdallr服务
5.1 创建部署目录
- 创建部署目录
mkdir -p /data/heimdallr && cd /data/heimdallr
5.2 docker-cli方式部署(可选)
如果想要使用docker-cli方式部署,可参考以下命令部署。(可选)
docker run -d \
--restart always \
--name heimdallr \
-p 5200:80 \
eluki/heimdallr-password-manager:v1.2.2
5.3 创建Heimdallr容器
本次实践我们采用 Docker Compose 方式进行部署,这也是我推荐的方式。首先我们需要创建并编辑
docker-compose.yaml文件,请注意宿主机映射端口可根据您的实际情况自行设置,务必避免端口冲突。
vim docker-compose.yaml
version: '3.8'
services:
host:
image: eluki/heimdallr-password-manager:v1.2.2
container_name: heimdallr
restart: always
ports:
- "5200:80"
deploy:
resources:
limits:
memory: 256M
cpus: '0.5'
logging:
driver: "json-file"
options:
max-size: "3m"
max-file: "3"
执行以下命令,创建Heimdallr容器。
docker compose up -d

5.4 查看Heimdallr容器状态
检查Heimdallr容器运行状态,确保Heimdallr容器正常启动。
root@jeven:/data/heimdallr# docker compose ps
WARN[0000] /data/heimdallr/docker-compose.yaml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
heimdallr eluki/heimdallr-password-manager:v1.2.2 "dotnet Heimdallr.Ho…" host 28 seconds ago Up 27 seconds 0.0.0.0:5200->80/tcp, [::]:5200->80/tcp

5.5 检查Heimdallr容器日志
检查容器运行日志,确保Heimdallr服务正常运行。
docker compose logs

六、访问Heimdallr服务
6.1 访问初始页
浏览器地址:
http://<个人的服务器IP>:5200,访问Heimdallr初始页。如果无法访问,请确保宿主机的防火墙已关闭或已放行相关端口,对于云服务器还需配置相应的安全组规则。

6.2 生成密码
- 密码配置项介绍如下:
| 参数 | 描述 |
|---|---|
| Service name | 目标服务的标识名称,作为密码派生的输入因子之一。 |
| Common name | 服务关联的账号或密码 ID,与 Service name 共同确定唯一密码。 |
| Master password | 主密码,结合服务名称、账号及字典通过哈希算法派生出确定性密码。 |
| Include letters | 控制生成的密码中是否包含字母字符。 |
| Include numbers | 控制生成的密码中是否包含数字字符。 |
| Include symbols | 控制生成的密码中是否包含特殊符号字符。 |
| Password length | 设定生成密码的字符长度。 |
| Version | 密码版本号,递增该值可在不更改主密码的情况下派生新密码。 |
自行填写相关信息,点击生成密码即可。


七、总结
本次在 Docker 中完成了 Heimdallr 无状态密码管理器的部署实践,借助容器可以快速搭建起轻量化的密码生成管理服务。整个部署流程操作简单,无需复杂数据库配置,充分体现了无状态应用部署便捷、迁移灵活的优势。使用 Docker Compose 或者 docker‑cli 两种方式均可完成服务启动,能够适配不同运维场景的使用需求。通过本次实践也可以看出,容器非常适合部署这类轻量工具类应用,方便个人本地或内网环境快速搭建安全密码工具。
- 点赞
- 收藏
- 关注作者
评论(0)