注:作者居住在韩国,部分内容包含韩国特有的背景。
Fly.io 这家公司提供了一项功能:只要准备好 Docker 镜像,就能轻松地把镜像部署到指定国家等。
(注册完成后)只要适当地编写一个名为 fly.toml 的文件,然后输入
flyctl deploy它就会帮你处理好一切,将镜像上传到服务器,并完成 DNS、HTTPS 设置、IP 分配、监控(Grafana)配置等。
而且只需点几下就能 Scale-up。虽然你也可以自己手动配置,但这些相当繁琐的工作它都会替你完成,非常方便。
此外,免费层也提供如下规格。

不过既然是免费层,规格自然并不宽裕。 因此它适合那种"数据管理很重要、希望使用云服务,但又不会消耗太多计算资源"的应用。
下面我就来介绍如何安装一款非常契合此用途的密码管理器 Vaultwarden。
VaultWarden(Bitwarden 兼容服务器)

Bitwarden 是一款密码管理器,能让你通过网页浏览器、Windows、iOS、Android 应用等在多台设备之间共享密码。
如果你用过 Chrome,把它想成"Chrome 自动填充"功能就最容易理解。
除此之外,Bitwarden 还支持 OTP 功能,

并提供密码生成器,

以及通过 Organization(组织)设置共享密码的功能。
如果你和别人一起开发,需要共享 Slack Webhook URL、环境变量、开发数据库 ID 与密码等,这些功能就非常实用。
此外它还提供安全审计功能,可以检查被泄露的数据库中是否有与你密码一致的项、是否存在被重复使用的密码等,以及通过端到端加密发送敏感数据的 SEND 功能等。
然而,Bitwarden 虽然是开源的,可以 Self-hosting 密码服务器,但要在生产级别上保证高可用性,需要较高的规格和不少配置。(Bitwarden Install Docs )

为了解决这个问题,有个名为 Vaultwarden 的项目,它兼容 Bitwarden Client,但降低了规格要求,并采用 SQLite 作为数据库,仅靠一个 Docker Image 就能跑起服务器。
相比官方服务器需要 2GB RAM,这个服务器在 Idle 状态下约只需 100MB 内存,所以利用 Fly.io 部署后就能轻松使用!

让我们按照下面的步骤来部署一台 Vaultwarden 服务器吧。
- 按照 Fly.io Docs(Link )中的说明,安装与你的 OS 匹配的 flyctl,并完成登录。
- 在 Shell 中创建任意一个文件夹(我使用的是
~/flyio/vaultwarden文件夹),然后进入该文件夹。 3 . 输入下面的命令创建一个名为fly.toml的配置文件。此时,app-name可以按需修改。输入时会弹出选择 Region 的窗口,我选择了距离最近的 Tokyo(nrt) 区域。
flyctl launch --name app-name --image vaultwarden/server:latest --no-deploy- 输入下面的命令,创建一个用于持久化保存数据的 Volume。Volume 你可以理解为一种 SSD:即使容器挂掉,存储在其中的文件也不会丢失。app 名称要与第 3 步中设置的 app 名一致,Region 同样选择最近的 Tokyo(nrt) 区域。
flyctl volumes create vaultwarden_data --size 1 --app app-name- 使用以下命令创建应用启动时注入的 Admin Token Secrets。
ADMIN_TOKEN你可以理解为进入管理员页面所需的密码。 请使用一个不会泄露的独立密码;为了进入 admin 页面进行初始设置,我们会添加这个 Secrets 值。
flyctl secrets set ADMIN_TOKEN=abc123456 - 参考下面的文件,修改文件夹中的
fly.toml文件。 只需在原有文件中修改[env]部分、[mounts]部分以及[[services]]->internal_port部分即可。
app = "app-name"
kill_signal = "SIGINT"
kill_timeout = 5
processes = []
[env]
ROCKET_PORT = 8080
[experimental]
allowed_public_ports = []
auto_rollback = true
[mounts]
destination = "/data"
source = "vaultwarden_data"
[[services]]
http_checks = []
internal_port = 8080
processes = ["app"]
protocol = "tcp"
script_checks = []
[services.concurrency]
hard_limit = 25
soft_limit = 20
type = "connections"
[[services.ports]]
force_https = true
handlers = ["http"]
port = 80
[[services.ports]]
handlers = ["tls", "http"]
port = 443
[[services.tcp_checks]]
grace_period = "1s"
interval = "15s"
restart_limit = 0
timeout = "2s"- 在该文件夹下执行下面的命令部署应用。
flyctl deploy- 部署后,输入下面的命令访问网页。然后点击"创建账号",进行账号创建和主密码创建。
flyctl open- (Optional) 之后用下面的命令进入管理员页面,并使用上面创建的
ADMIN_TOKEN登录。如有需要的设置可以进行配置。我自己关闭了新用户注册,并关闭了邀请功能。
flyctl open /admin- 然后下载 Bitwarden 客户端,点击左上角的箭头,输入你部署好的应用地址。可输入
app-name.fly.dev,或者输入你刚刚访问过的网页地址。

恭喜你! 走到这一步说明设置已经完成!
之后就可以享用一款相当好用的密码管理器了。
Appendix 1. OTP 怎么添加? 在添加 ID/Password 时,在如下的 TOTP 栏中

输入上面那样的 Secret Key 即可。
Appendix 2. 我已经在用 Google 密码,可以接着用吗?
A. 可以!
从 Google 密码管理器中导出密码后,

进入 Vaultwarden 网页控制台 -> 登录 -> 工具 -> 导入数据,就可以继续使用你之前在 Chrome 中使用的密码。


Comments