搭建环境准备:一台长期在线的设备就够了

这是本章的最后一篇,目标很明确:把你带到部署前夜。读完前面四篇,你已经知道三条路线的区别、Vaultwarden 为什么是本书的选择、KeePass 的适用边界,以及自建的真实成本。现在把落地需要的环境逐项准备好:选什么设备装什么系统、Docker 怎么就位、数据目录和端口怎么规划、域名和反代怎么提前想好、安全基线先做哪几件事。准备完这些,第 3 章的部署就是照着清单执行的事。

这篇的定位是“环境检查清单”,不是教程。你要做的事和下一篇的部署一一对应,每一步准备不到位,部署时就会在同一个地方卡住。建议你边读边拿笔记下来:哪一项已经就绪、哪一项还需要采购或配置,最后核对一遍再动手。把环境和部署分开,还有一个现实好处:将来服务出问题时,你能快速判断问题出在环境还是出在应用,排查范围缩小一半。这点准备工作看似琐碎,实则决定了后面部署的顺畅度。

第一步:选定长期在线的设备和系统

再强调一次硬件门槛:Vaultwarden 对性能几乎没有要求,一台能常年通电、内存一个 G 以上、有几十 GB 空闲磁盘的设备就够了。旧台式机、N100 小主机、家用 NAS 都可以。关键不是快,而是稳——它要 7×24 小时在线,断电后能自动开机,系统不会因为别的折腾频繁重装。

系统建议选你最熟的那个 Linux 发行版。长期支持版本最省心,Debian 或 Ubuntu 的服务器版都是常见选择,装完只开最小化环境,不配桌面。如果你用 NAS,它自带的系统里一般也有 Docker 管理界面,直接用即可,不必额外装系统。具体硬件和装机思路,家用 NAS 家庭服务器搭建指南 的系统章节可以对照。设备就位后,先在路由器里给它绑定一个固定内网地址——后面所有端口映射都指向这个地址,它的内网 IP 变了,整套配置就要返工。

还有两个 BIOS 层面的小设置别漏:一是来电自启,断电恢复后机器自动开机;二是关闭自动休眠,让它一直保持唤醒。这两件事配好,你的设备才算达到“长期在线”的标准,否则一次短暂断电,密码服务就静默停工好几天,而你未必能第一时间发现。

nodes

第二步:装好 Docker 和 Docker Compose

本书所有部署都基于 Docker,理由前面已经说过:单容器、单数据目录、升级就是换镜像标签。设备装好系统后,第一件事是安装 Docker 引擎和 Docker Compose 插件。安装完成后,用一条 hello-world 之类的简单镜像验证引擎正常、当前用户有权限执行 docker 命令即可,不用折腾图形界面。

一个建议:把 Docker 的镜像和数据目录规划在空间充裕的磁盘上,别挤在系统盘。服务端镜像 vaultwarden/server 本身不大,但保险库的附件、日志将来都会落在挂载的数据目录里,提前给它留好位置。网络模式先用默认的桥接模式,不要一开始就折腾各种高级网络配置——本例的对外端口由反代统一处理,业务容器只需要在内网里能被反代访问到。验证 Docker 时,顺手测一下容器能否正常联网拉取镜像:网络环境受限的设备(比如公司内网做了代理)往往在这里就卡住,提前发现,部署当天就不会抓瞎。

顺手做一件长期受益的事:给这台设备开启自动安全更新。Linux 的安全补丁不会自己跑到机器上,你把基础系统更新配成自动的,后面每月的维护负担就小了一大块。密码服务虽然只暴露一个端口,但宿主系统本身也不该成为被遗忘的角落。

第三步:规划数据目录与端口

这一步全部是纸上规划,但定下来后面就不用改。数据目录:在宿主机上专门建一个目录,将来容器的 /data 就挂载到这里。这个目录是你的保险库本体,备份就是拷它,迁移就是搬它,权限要收紧,只有管理员能进。端口:容器内默认监听 80,宿主机上映射成 8080:80 这类内网端口,这个端口只对反代开放,不直接暴露公网。对外统一入口是反代的 HTTPS 端口,由反代把请求转进容器。

规划项 建议取值 说明
容器内业务端口 80 Vaultwarden 默认,不用改
宿主机映射端口 8080:80 仅内网可达,反代转发用
数据目录 专属目录,挂载到 /data 备份与迁移的唯一对象
对外入口 443(HTTPS) 由反向代理统一监听
容器镜像标签 vaultwarden/server:1.37.4 固定稳定版本,不追 latest

把这套映射关系写在你自己的部署笔记里:域名指向哪个公网端口、反代把它转到哪个内网地址、容器映射在哪个端口、数据目录在哪。第 3 章写 Compose 文件时,照抄这张表就行。特别提醒镜像标签别用 latest:latest 是浮动的,哪天自动拉到未经验证的新版,升级风险就变成了定时炸弹;固定到 1.37.4 这样的稳定标签,什么时候升、升到哪个版本,完全由你决定。

第四步:域名与反向代理的准备

手机和浏览器客户端连服务端,必须走 HTTPS,而且证书要被系统信任,所以你需要一个域名加一套反代。域名先注册好,解析到你家的公网地址;走内网穿透的话,则按穿透服务给出的地址配置。反代可以选 Caddy、Nginx 或 Nginx Proxy Manager 中的任意一个:它们负责监听 443、自动申请和续期证书、再把请求转发到内网 8080 端口的容器。

为什么不直接让容器自己监听 443?因为自签名证书不被客户端信任,而且一台设备上将来可能不止跑一个服务,反代统一管域名和证书,是最省心的分工。域名解析方式(DDNS 还是穿透)和路由器端口映射的具体配置,参考 软路由实战手册 的网络章节,本章不再展开——你只需要提前把域名买到手、解析思路想清楚,部署时才不会临时卡壳。

一个提前要做好的选择:反代本身也要装在这台设备上,或者装在同网段的另一台机器上。建议在部署 Vaultwarden 之前,先把反代跑起来,并用一个简单的测试页面确认 HTTPS 证书自动签发成功。这样等真的轮到容器上线,网络这一层已经是通的,你不需要同时排查两个变量。

flow

第五步:安全基线先做几件事

服务还没上线,安全基线先立好,后面再补往往补不全。第一,改掉对外默认端口,不要用最常见的端口直接暴露,减少被批量扫描盯上的概率。第二,在路由器或防火墙上收紧规则:除了反代对外需要的端口,其他端口一律不进公网;宿主机的防火墙只放行内网到 8080 的访问。第三,设备本身的登录要强密码加密钥登录,关闭不用的服务,定期给系统打安全更新。第四,主密码在脑子里过一遍强度——这是保险库唯一的钥匙,长度和复杂度都要达标。

这些动作和下一篇开始部署的内容连在一起:我们在启动容器之前,先确认这些基线都已就位,然后才让服务对外提供加密同步。安全这件事,自建意味着没有厂商替你默认做好,但好消息是上面四件事都是一次性配置,做完就长期生效。还有一个意识要提前建立:等服务上线之后,任何来自陌生地址的登录尝试、任何账号注册请求,都说明你的服务已经暴露在互联网的视野里。这不是要你恐慌,而是提醒你那几个一次性配置的价值——端口改过、注册关掉、防火墙收紧之后,这些扫描和试探大部分会自动撞上一堵空墙。

动手前的核对清单

在真正进入第 3 章之前,把下面这张清单逐项打勾。任何一项没打勾,部署时你就会在同一个地方卡住,不如现在补齐。

设备项:设备常年通电,已设置来电自启和关闭休眠;内网固定地址已在路由器里绑定;系统是最小化安装的长期支持版本,自动安全更新已开启。网络项:域名已注册,解析方式已定(DDNS 或内网穿透);路由器的端口映射规则已想好,只留反代对外的端口。软件项:Docker 引擎与 Compose 插件安装完成,简单镜像能正常运行;数据目录已建好,权限已收紧;反向代理已装好,并用一个测试页面确认 HTTPS 证书自动签发成功。安全项:设备登录用强密码加密钥登录,关闭不必要的服务;宿主机防火墙规则已收紧;你的主密码方案已经想好,长度和复杂度达标。

这张清单的价值在于把“准备”和”部署“分开。清单全绿之后,第 3 章你要做的就只是照着 Compose 文件启动容器、填几个环境变量、注册第一个账号。那时候遇到报错,你能立刻确定问题只出在部署这一层,而不是环境里藏着三四个没配好的东西。

准备就绪,进入部署

到这里,本章结束。你已经有了一台固定内网地址的长期在线设备、装好的 Docker 环境、规划好的数据目录和端口、想好的域名与反代方案,以及一套收紧过的安全基线。下一步就是第 3 章「部署」:用 Docker Compose 把 vaultwarden/server:1.37.4 这个容器跑起来,接上反代的 HTTPS,注册你的第一个账号,把官方客户端连到自己的服务器上。工具都备齐了,剩下的就是动手。

建议你在进第 3 章之前,把这一节的清单在脑子里过一遍:设备在线且固定内网地址、Docker 可用、数据目录和端口已写进笔记、域名能解析、反代测试页面有 HTTPS、防火墙规则收紧。全部打勾,就可以放心开始部署了。

延伸阅读

  • 设备与系统的完整搭建过程,对照 家用 NAS 选购与上手指南 的硬件与初始化章节执行。
  • 域名解析、DDNS、端口映射的网络准备,按网络类手册的对应章节操作,此处不再赘述。
  • 准备好了吗?下一章开始,我们正式部署 Vaultwarden。