密码锁进 NAS——PasswWord-XL 本地密码库部署教程
把密码锁进 NAS:password-XL 本地密码库部署教程
一句话总结: 这是一个可以部署在 NAS 上的本地密码管理服务。用 Docker 跑起来之后,你的后台密码、路由器密码、各种服务账号,就不用继续在微信收藏、备忘录、截图相册里“全国巡演”了。
你是不是也有这种祖传操作:
-
NAS 后台密码:记在备忘录里 -
路由器密码:藏在微信收藏里 -
某个 Docker 应用的管理员密码:存在截图里 -
最离谱的是:文件名叫:
重要密码别删.txt
这已经不是密码管理了,这是给黑客准备自助餐。
今天介绍一个适合 NAS 玩家折腾的小工具:password-XL。
它是一个开源免费的密码管理项目,可以部署在自己的 NAS 上,数据放在自己的机器里。简单说就是:
密码不再四处流浪,统一关进 NAS 这个“小黑屋”。
项目信息
|
|
|
|---|---|
|
|
|
|
|
|
https://github.com/peng0105/password-xlhttps://password-xl.cn
| 部署方式 | Docker / Jar / NAS | | 推荐玩法 | NAS 私有部署 |
password-XL 是什么?
password-XL 是一款开源密码管理工具,主打几个关键词:
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
对 NAS 用户来说,最重要的是:
只需要跑一个 Docker 容器,就能在局域网里拥有自己的密码管理服务。
不用额外装数据库,不用前后端分开部署,也不用半夜研究 Nginx 配置研究到怀疑人生。
适合谁用?
1. NAS 用户
NAS 都买了,不拿来管密码,多少有点浪费这块硬盘。
2. Docker 爱好者
看到下面这种配置文件就手痒的人,懂的都懂。
docker-compose.yml
3. 不想把密码全部交给第三方服务的人
不是说云服务不好,只是有些东西放自己手里,睡觉确实更踏实。
4. 家里服务太多的人
Jellyfin、qBittorrent、Alist、Home Assistant、青龙面板、OpenWrt、Portainer……
密码多到像 NAS 版《百家姓》。
部署前准备
开始之前,你需要准备好这些东西:
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
本文采用通用 Docker Compose 方式。
不同 NAS 的界面可能不一样,但核心逻辑都是:
创建项目↓填写 compose↓映射数据目录↓启动容器↓查看日志拿初始密码↓登录使用
推荐 Docker Compose 文件
下面是适合大多数 NAS 的 compose 配置。
注意: 下面这个路径需要改成你自己 NAS 上真实存在的目录。
/volume1/docker/password-xl
services:password-xl-service:image: ccr.ccs.tencentyun.com/password-xl/password-xl-service:latestcontainer_name: password-xl-servicerestart: unless-stoppedports:- "9080:8080"volumes:- /volume1/docker/password-xl:/password-xl-service
compose 配置解释
镜像地址
image: ccr.ccs.tencentyun.com/password-xl/password-xl-service:latest
这是 password-XL 的后端整合镜像。
重点来了:
现在这个镜像已经包含前端页面,所以不需要再单独部署前端。
也就是说,一个容器就能跑完整服务。
端口映射
ports:- "9080:8080"
这里的意思是:
|
|
|
|---|---|
|
|
|
|
|
|
NAS 外部访问端口:
9080
容器内部端口:
8080
如果下面这个端口已经被别的服务占用了:
9080
可以改成:
ports:- "9180:8080"
那访问地址就变成:
http://NAS_IP:9180
数据目录映射
volumes:- /volume1/docker/password-xl:/password-xl-service
这一行非常重要。
左边是 NAS 上的真实目录,右边是容器内部目录。
NAS 真实目录示例:
/volume1/docker/password-xl
容器内部目录:
/password-xl-service
password-XL 的配置文件和密码数据会保存在容器内部这个目录里:
/password-xl-service
如果你不挂载这个目录,容器一删,数据也跟着“肉身成圣”,直接飞升。
常见 NAS 路径示例
不同 NAS 的目录结构不完全一样,可以参考下面这些写法:
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
群晖 DSM:
/volume1/docker/password-xl
Unraid:
/mnt/user/appdata/password-xl
飞牛 / 绿联等:
/DATA/AppData/password-xl
自定义 Linux 服务器:
/opt/password-xl
原则只有一个:
左边路径必须是宿主机真实存在、并且你愿意长期保存数据的目录。
如果启动失败:换 JVM 镜像
官方文档里提到,如果启动后遇到 CPU 指令不支持的问题,可以把镜像换成 JVM 版本。
services:password-xl-service:image: ccr.ccs.tencentyun.com/password-xl/password-xl-service-jvm:latestcontainer_name: password-xl-servicerestart: unless-stoppedports:- "9080:8080"volumes:- /volume1/docker/password-xl:/password-xl-service
简单理解:
|
|
|
|---|---|
|
|
|
|
|
|
普通镜像:
password-xl-service:latest
JVM 兼容镜像:
password-xl-service-jvm:latest
如果普通镜像能跑,就优先用普通镜像。
如果启动报错,先别急着骂 NAS。很多时候不是机器不努力,是镜像和 CPU 八字不合。
在 NAS 里创建项目
不同 NAS 的入口名称不一样,大概会叫这些:
-
群晖:Container Manager -
威联通:Container Station -
极空间:Docker -
绿联:Docker -
飞牛:Docker / 应用容器
大致步骤如下:
-
打开 NAS 的 Docker 管理界面 -
找到“项目”或“Compose” -
新建项目 -
项目名称填写:
password-xl
-
粘贴上面的 compose 内容 -
修改数据目录路径 -
点击部署 / 创建 / 启动
如果你的 NAS 支持上传 compose 文件,也可以直接把配置保存成下面这个文件名再上传。
docker-compose.yml
SSH 命令行部署方式
如果你喜欢 SSH 到 NAS 上操作,也可以这样。
先创建目录:
mkdir -p /volume1/docker/password-xlcd /volume1/docker/password-xl
创建 compose 文件:
docker-compose.yml
```yamlservices: password-xl-service: image: ccr.ccs.tencentyun.com/password-xl/password-xl-service:latest container_name: password-xl-service restart: unless-stopped ports: - "9080:8080" volumes: - /volume1/docker/password-xl:/password-xl-service
启动服务:```bashdocker compose up -d
查看容器状态:
docker ps
查看日志:
docker logs password-xl-service
如果你的系统还是老版本 Docker Compose,命令可能是:
docker-compose up -d
第一次启动:去日志里找初始密码
password-XL 首次启动时,会自动生成一个随机登录密码。
这个密码会输出在容器日志里。
查看日志:
docker logs password-xl-service
在 NAS 图形界面里,也可以进入容器详情,找到“日志”。
同时,这个密码也会保存在你挂载目录里的配置文件中:
password-xl.toml
比如:
/volume1/docker/password-xl/password-xl.toml
小提醒: 如果你修改了下面这个配置文件里的登录密码,需要重启容器才会生效。
password-xl.toml
重启命令:
docker restart password-xl-service
或者:
docker compose restart
访问 password-XL
假设你的 NAS IP 是:
192.168.31.3
compose 里端口写的是:
ports:- "9080:8080"
那么浏览器访问:
http://192.168.31.3:9080
如果页面正常打开,说明服务已经跑起来了。
到这里,NAS 又多了一个新应用。恭喜,你的 Docker 列表又长了一截,离“我也不知道这些容器都是干嘛的”更进一步。
登录方式选择
进入页面后,可以看到 password-XL 支持多种存储方式:
-
阿里云 OSS -
腾讯云 COS -
私有存储
我们是部署在自己 NAS 上,所以这里选择:
私有存储
然后输入刚才在日志里看到的初始密码,就可以登录。
首次使用:设置主密码
第一次进入系统后,需要设置主密码。
这里一定要认真点。
主密码就像你家保险柜的钥匙,不是互联网服务里那种“忘记密码点这里发验证码”的温柔剧情。
官方文档也强调了:
主密码无法找回。
如果忘了,之前保存的密码就无法解密恢复。
所以建议:
-
主密码要足够复杂 -
但也要你自己真的能记住 -
不要用下面这种弱密码:
123456adminpassword
-
不要用生日 -
不要用手机号
如果你设置成下面这种密码,那就不是密码管理器,是密码展示柜。
123456
添加第一条密码
进入系统后,就可以新建密码记录了。
一般可以保存这些信息:
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
你可以先把 NAS 相关服务整理进去:
群晖后台OpenWrtJellyfinqBittorrentAlist青龙面板Home AssistantPortainer


以前这些密码散落在浏览器、备忘录、微信收藏、截图相册里。
现在统一放进 password-XL,至少不用每次登录后台都上演一出《我密码呢》。
数据备份很重要
重点来了。
password-XL 部署在 NAS 上,不代表万无一失。
NAS 也是机器,机器就可能:
-
硬盘坏 -
系统崩 -
手滑删目录 -
Docker 项目被你“清理空间”时误删 -
半夜折腾反向代理把自己绕晕
所以一定要备份这个目录:
/volume1/docker/password-xl
尤其是里面的:
password-xl.toml
以及 password-XL 生成的数据文件。
建议你这样做:
-
定期备份到另一块硬盘 -
使用 NAS 自带快照 -
同步到另一台设备 -
重要数据再加一份离线备份
记住一句 NAS 圈老话:
没备份的数据,就是还没丢的数据。
更新 password-XL
如果后续要更新镜像,可以用下面流程。
进入 compose 所在目录:
cd /volume1/docker/password-xl
拉取最新镜像:
docker compose pull
重建容器:
docker compose up -d
清理旧镜像:
docker image prune
如果是 NAS 图形界面,一般操作是:
-
停止项目 -
拉取最新镜像 -
重新创建 / 更新项目 -
保持原来的挂载目录不变
最重要的是:
更新前先备份数据目录。
别嫌麻烦。你现在嫌备份麻烦,数据丢了以后就会觉得人生麻烦。
反向代理建议
如果你只在局域网使用,直接访问:
http://NAS_IP:9080
就可以。
如果你打算外网访问,我个人建议谨慎一点。
密码管理服务这种东西,不建议直接裸奔到公网。实在需要外网访问,建议:
-
使用 VPN,比如 WireGuard / Tailscale / ZeroTier -
或者套 HTTPS 反向代理 -
设置强密码 -
NAS 防火墙限制访问来源 -
定期更新镜像 -
不要随便暴露管理端口
公网暴露密码服务这件事,就像把保险柜放小区门口,再贴个纸条:欢迎测试。
不是不能做,但得有安全意识。
常见问题
页面打不开怎么办?
先检查容器是否运行:
docker ps
再看日志:
docker logs password-xl-service
确认端口是否写对。
如果 compose 里是:
ports:- "9080:8080"
那访问地址就是:
http://NAS_IP:9080
不是下面这两个端口:
808080
容器启动失败怎么办?
先看日志:
docker logs password-xl-service
如果怀疑是 CPU 兼容性问题,换 JVM 镜像:
image: ccr.ccs.tencentyun.com/password-xl/password-xl-service-jvm:latest
重建容器后数据没了?
大概率是挂载目录没配对。
一定要有:
volumes:- /volume1/docker/password-xl:/password-xl-service
并且左边路径要是 NAS 上真实存在的目录。
修改密码后不生效?
修改下面这个配置文件后,需要重启容器:
password-xl.toml
docker restart password-xl-service
需要单独部署前端吗?
不需要。
官方文档说明,如果使用私有后端服务,最新后端镜像已经包含前端页面服务。
所以 NAS 部署时,只需要一个后端整合容器即可。
也就是说,本篇这个 compose 就够了。
完整 compose 汇总
推荐版本
services: password-xl-service: image: ccr.ccs.tencentyun.com/password-xl/password-xl-service:latest container_name: password-xl-service restart: unless-stopped ports: - "9080:8080" volumes: - /volume1/docker/password-xl:/password-xl-service
### JVM 兼容版本
services: password-xl-service: image: ccr.ccs.tencentyun.com/password-xl/password-xl-service-jvm:latest container_name: password-xl-service restart: unless-stopped ports: - "9080:8080" volumes: - /volume1/docker/password-xl:/password-xl-service
如果你的 NAS 路径不是下面这个,记得改成自己的实际路径。```text/volume1/docker/password-xl
总结
password-XL 的部署难度不高,尤其是现在后端镜像已经整合了前端页面,只需要一个容器就能跑起来。
整个流程可以概括为:
准备数据目录↓写 compose↓启动容器↓查看日志拿初始密码↓浏览器访问↓选择私有存储↓设置主密码↓开始管理密码
它不一定适合所有人,但对于 NAS 玩家来说,password-XL 是一个挺值得尝试的小工具。
尤其是你已经在 NAS 上部署了一堆服务,每个服务都有账号密码。与其继续靠脑子、截图、备忘录和玄学记忆力硬撑,不如把它们统一收纳起来。
毕竟,人类的大脑是用来思考人生的,不是用来记下面这串东西到底哪个感叹号有没有大写的。
Admin@123456!
最后提醒一句:
密码管理器能帮你管密码,但救不了乱设密码的人。
主密码请认真设置,数据目录请认真备份。
不然哪天真丢了,就只能对着 NAS 深情吟唱:
“你把我的密码,带去了哪里……”
夜雨聆风
