服务端

使用 docker 配置,docker-compose 文件如下:

services:
  vaultwarden:
    container_name: vaultwarden
    image: vaultwarden/server:latest
    restart: unless-stopped
    volumes:
      - ./data/:/data/
    ports:
      - 14680:80
    environment:
      - DOMAIN=https://xxx.xxx.xxx # 这是您希望与您的Vaultwarden实例关联的域名。
      - LOGIN_RATELIMIT_MAX_BURST=10 # 允许在一阵登录/两步验证尝试中的最大请求次数。
      - LOGIN_RATELIMIT_SECONDS=60 # 这是来自同一IP的登录请求之间的平均秒数,在Vaultwarden限制登录次数之前。
      - ADMIN_RATELIMIT_MAX_BURST=10 # 这与LOGIN_RATELIMIT_MAX_BURST相同,只争对admin面板。
      - ADMIN_RATELIMIT_SECONDS=60 # 这与LOGIN_RATELIMIT_SECONDS相同
      - ADMIN_SESSION_LIFETIME=20 # 会话持续时间
      - ADMIN_TOKEN="key" # 此值是Vaultwarden管理员面板的令牌(一种密码)。为了安全起见,这应该是一个长的随机字符串。如果未设置此值,则管理员面板将被禁用。建议openssl rand -base64 48 生成ADMIN_TOKEN确保安全
      - SENDS_ALLOWED=true  # 此设置决定是否允许用户创建Bitwarden发送 - 一种凭证共享形式。
      - EMERGENCY_ACCESS_ALLOWED=true # 此设置控制用户是否可以启用紧急访问其账户的权限。例如,这样做可以在用户去世后,配偶可以访问密码库以获取账户凭证。可能的值:true / false。
      - WEB_VAULT_ENABLED=true # 此设置决定了网络保险库是否可访问。一旦您配置了您的账户和客户端,停止您的容器,然后将此值切换为false并重启Vaultwarden,可以用来防止未授权访问。可能的值:true/false。
      - SIGNUPS_ALLOWED=true # 此设置控制新用户是否可以在没有邀请的情况下注册账户。可能的值:true / false。
	  - EXPERIMENTAL_CLIENT_FEATURE_FLAGS=ssh-key-vault-item,ssh-agent # 实验特性,开启 ssh 支持

如何需要 vaultwarden 支持保存 ssh 类似的密钥以及 ssh-agent,需要在 docker-compose.yml 中声明。

桌面应用配置

Macos 端的 vaultwarden 配置非常抽象。当你选择从第三方安装软件时,他不能支持在浏览器上 biometrics 解锁,也就是指纹解锁;而当你选择从 app store 安装软件时,他无法支持实验功能(ssh 相关)。

好在这些都有解决方案,对于第三方安装的软件,可以通过添加环境变量

ALLOW_BROWSER_INTEGRATION_OVERRIDE=true

以增强浏览器集成。但是这又遇到一个问题 ------ 只在终端运行的时候生效,如何直接从应用启动无法继承环境变量。
为了让应用通过 launchctl 继承环境变量,可以在 ~/Library/LaunchAgents/ 下创建 .plist 文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.user.env.vars</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/launchctl</string>
        <string>setenv</string>
        <string>ALLOW_BROWSER_INTEGRATION_OVERRIDE</string>
        <string>true</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>