飞牛NAS部署Password-XL:搭建自托管Web密码管理器

前言

账号越来越多以后,只靠记忆、便签或者重复使用几个常见密码,很快就会变得难以管理。密码管理器的价值就在于把这些账号凭据集中保存,再用一个独立的主密码保护密码库。

除了使用托管式密码管理服务,也可以把密码管理程序运行在自己管理的NAS或服务器中。这样做的主要区别不是"天然更加安全",而是数据保存、服务更新、备份和网络访问这些环节都由自己负责。

本文会在飞牛NAS中通过Docker Compose部署Password-XL,分别启动Web前端和后端服务,配置私有服务账号,再通过浏览器设置密码库的主密码并实际保存一条密码记录。

由于密码管理器保存的是高度敏感信息,部署时需要特别区分服务登录密码和密码库主密码,并确认数据目录能够正确持久化。本文中的示例账号和密码只应用于演示,实际环境应使用独立的强随机凭据。

最后还会通过cpolar为Password-XL建立公网访问入口,用来测试从其他网络打开自己的密码管理页面。公网访问会扩大服务攻击面,因此远程使用前仍应确认前后端访问链路、HTTPS以及应用自身的身份认证是否配置正确。

1.Password-XL是什么?

Password-XL是一款开源、轻量、自托管的Web密码管理器,专为注重隐私与安全的个人用户和家庭设计。它让你无需依赖Password、Bitwarden等第三方云服务,即可在本地(如NAS、树莓派或私有服务器)搭建属于自己的密码保险箱。

核心特性:

  • 完全自托管:所有数据存储在你自己的设备上,不上传、不共享、不追踪。
  • 端到端加密:支持主密码加密,即使数据库泄露,密码也无法被读取。
  • 简洁直观的Web界面:响应式设计,手机、平板、电脑均可流畅访问。
  • 多平台同步:通过内网或内网穿透(如cpolar),实现跨设备安全访问。
  • 开源免费:代码公开透明,社区驱动,无隐藏收费。
  • Docker一键部署:轻松集成到NAS(如群晖、TrueNAS)或Linux服务器。

2.在飞牛OS上部署Password-XL

打开文件管理,创建一个docker文件(我是用来存放docker部署的应用):

右键点击,选择"详细信息":

复制它的原始路径:

打开飞牛NAS的系统设置--SSH--SSH功能--启用:

  • 使用终端软件通过SSH连接到NAS,并切换到root状态下。

  • 进入到上面复制的文件路径。

shell 复制代码
# 将 /vol1/1000/docker 换成你实际的文件夹路径
cd /vol1/1000/docker
  • 创建并进入项目文件夹
shell 复制代码
mkdir password-xl && cd password-xl
  • 创建子文件夹
shell 复制代码
mkdir -p password-xl-service/password-xl-data
  • 进入后端服务文件夹
shell 复制代码
cd password-xl-service
  • 创建用户列表文件
shell 复制代码
vi password-xl.toml

按需修改下面的模板代码,需要多少用户就创建多少个。

shell 复制代码
[[user]]
username = "u1"
password = "123456"
[[user]]
username = "u2"
password = "123455"
  • 返回上一层文件夹路径
shell 复制代码
cd ..
  • 编辑docker-compose.yml项目文件
shell 复制代码
vi docker-compose.yml
shell 复制代码
services:
  password-xl-web:
    image: huangypeng/password-xl-web
    container_name: password-xl-web
    restart: unless-stopped
    ports:
      - "8080:80"    # 左侧的8080前端端口可自由修改
  password-xl-service:
    image: huangypeng/password-xl-service
    container_name: password-xl-service
    restart: unless-stopped
    ports:
      - "8081:8080"    # 左侧的8081后端端口可自由修改
    volumes:
      - ./password-xl-service:/password-xl-service
  • 执行命令创建项目容器
shell 复制代码
docker compose up -d
  • 查看项目容器的实时日志
shell 复制代码
docker compose logs -f

打开浏览器,以飞牛的IP地址+设置的端口进行访问 以本机为例:http://192.168.42.147:8080

我们可以看到,访问成功啦!

3.如何使用Password-XL?

点击私有服务,点击登录:

服务地址http://192.168.88.130:8081

用户名: 前面password-xl.toml文件中设置的

密码: 前面password-xl.toml文件中设置的

保存好提示的信息:

设置一个主密码,可以选择标准密码和手势密码。

然后就登录进来啦!

这个网页的安全性特别好,只要你点击了别的东西,一回来就会让你输入主密码:

点击设置,还有很多功能:

添加一个密码:

我们可以看到,添加成功,页面是非常简洁美观的:

我们成功部署了Password-XL!本地密码管理从未如此安全又便捷!

但......等等!如果某天深夜在家,突然想查一个重要密码------却发现Password-XL 部署在公司NAS上,根本无法访问?难道要等到第二天回公司才能解锁?那可太不方便了!

别担心!内网穿透神器 ------cpolar来拯救你!

借助cpolar,你可以轻松将部署在公司内网(NAS)上的Password-XL服务,安全地映射到公网。无论你是在家、在咖啡馆,还是在旅途中,只需一个链接,就能随时随地访问你的私有密码库!

安全可靠| 一键穿透| 全球可达

现在就用cpolar打通内外网壁垒,让Password-XL真正成为你"随身携带"的数字保险箱!

4.安装cpolar内网穿透

首先打开飞牛云NAS设置界面,开启ssh 连接,端口默认为22即可,开启后,我们就可以ssh 连接飞牛云NAS执行命令:

然后我们通过输入飞牛云NAS的IP地址ssh远程连接进去,因为fnOS是基于Linux 内核开发的,所以我们可以按照cpolar的Linux安装方法进行安装:

连接后执行下面cpolar Linux 安装命令:

shell 复制代码
sudo curl https://get.cpolar.sh | sh

再次输入飞牛云nas的密码确认后即可自动安装

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

shell 复制代码
sudo systemctl status cpolar

Cpolar安装和成功启动服务后,在浏览器上输入飞牛云主机IP加9200端口即:【http://localhost:9200】访问Cpolar管理界面,使用官网注册的账号登录,登录后即可看到配置界面,接下来在web界面配置即可:

5.配置公网地址

登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理------创建隧道:

  • 隧道名称:可自定义,本例使用了:password,注意不要与已有的隧道名称重复

  • 协议:http

  • 本地地址:8080

  • 域名类型:随机域名

  • 地区:选择China Top

    点击创建:

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

访问成功。

6.保留固定公网地址

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

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

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

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名
  • 地区: China Top

点击更新

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

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

这样,我们就可以随时随地查看我们密码啦!

总结

完成以上配置后,Password-XL已经通过Docker Compose运行在飞牛NAS中,前端和后端服务分别通过对应端口提供访问。

本文先配置了Password-XL私有服务账号,再通过Web页面连接后端服务并设置密码库主密码,随后添加了一条密码记录,用来验证基础的密码保存和读取流程。

对于密码管理器来说,自托管并不意味着自动获得更高安全性。服务账号密码、主密码、数据文件和备份都属于敏感信息,实际使用时应采用独立的强密码,并确认Password-XL当前版本的加密机制、数据持久化目录以及恢复方式符合自己的安全需求。

通过cpolar为Password-XL创建公网入口后,还可以从其他网络环境访问对应页面。不过远程使用前需要特别确认前端与后端服务在公网环境中的实际连接方式,并优先使用HTTPS和必要的访问认证,不应把公网地址或固定二级子域名本身当作安全措施。

如果需要长期使用固定访问地址,可以根据实际套餐配置二级子域名,在账号和隧道配置保持有效期间保持地址固定。

从Docker部署、私有服务配置,到主密码和密码记录测试,本文完成了一套Password-XL自托管密码库的基础搭建流程;公网访问则应在确认认证、加密、备份和前后端网络链路后再作为长期使用方案。

相关推荐
嘟嘟07172 小时前
Next.js 里 SSR、CSR 和水合到底差在哪?从一段待办代码说起
前端·后端·next.js
liuxiaocheng2 小时前
快速上手:5 分钟跑通第一个 AI SDK 例子
前端·人工智能·后端
霹雳桃2 小时前
移动端 H5 折叠屏适配实战:为什么 max-width 没用,min(vw, px) 才是正解
前端·前端框架
Goodbye3 小时前
useContext 上下文与自定义 Hooks:跨层级数据共享的优雅方案
前端
新时代牛马3 小时前
Vue.js 响应式原理详解
前端·javascript·vue.js
jaysee-sjc3 小时前
【JavaWeb】Tlias智能学习辅助系统|后端Web实战(登录认证)
java·开发语言·前端·学习·mybatis
触底反弹3 小时前
🔥 从 SPA 到 SSR:5 个核心差异搞懂 Next.js 为什么是前端 SEO 的终极方案
前端·react.js·next.js
岁月留痕1683 小时前
11 实战项目一:搭建“一言”项目骨架
前端
用户2181697049303 小时前
Flutter (十五) CustomScrollView PageView
前端