vaultwarden-logo-auto.svg

Vaultwarden:一个面向个人、家庭和小型组织,使用 Rust 编写的非官方 Bitwarden 服务器实现,它与官方 Bitwarden 客户端兼容,非常适合不希望运行官方的占用大量资源的自托管部署。并且Vaultwarden也受到了Bitwarden 官方的支持,是一个很不错的私有密码托管解决方案。

官方地址

仓库:https://github.com/dani-garcia/vaultwarden

Wiki:https://github.com/dani-garcia/vaultwarden/wiki

安装

直接使用docker-compose部署,贴上我自用的一个compose文件。其中的环境变量可以参考官方wiki添加使用。

version: '3'

services:
  vaultwarden:
    container_name: vaultwarden
    image: m.daocloud.io/docker.io/vaultwarden/server:latest #使用加速镜像
    restart: unless-stopped
    volumes:
      - /opt/storage/vaultwarden/data/:/data/
    ports:
      - 25839:80
    environment:
      - DOMAIN=# 这是您希望与您的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= # 此值是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=false # 此设置控制新用户是否可以在没有邀请的情况下注册账户。可能的值:true / false。
      - DATABASE_URL=mysql://[[user]:[password]@]host[:port][/database] #mysql数据库

然后执行docker compose up 启动容器,然后通过ip:port或者通过反代域名访问。

为了正确运行 vaultwarden,现在几乎需要启用 HTTPS,因为 Bitwarden 网络保险库使用大多数浏览器仅在 HTTPS 上下文中可用的 Web 加密 API。直接在反代侧配置好https即可,相关配置可参考你使用的反代服务。

管理员面板

在开启管理面板前,请配置好https,保证访问安全。Vaultwarden的管理面板密码采用对密码进行哈希处理的方法保护。Vaultwarden 中内置了一个 PHC 生成器,您可以通过 CLI /vaultwarden hash运行它。官方Wiki

#将使用OWASP预设,代替默认的Bitwarden 预设,提高防暴力破解的安全性。
#如果想使用默认的哈希预设,删除指令后面的'-preset owasp'即可

#使用已创建的容器内执行生成指令
docker exec -it <容器名> /vaultwarden hash -preset owasp

# 使用临时容器打开交互式终端,此处指定的是镜像名。
docker run --rm -it vaultwarden/server /vaultwarden hash -preset owasp

# 使用二进制文件,使用二进制部署时可用
./vaultwarden hash -preset owasp

生成的密钥,在输入到docker-compose的环境变量时,需要把密钥里的$ 替换为$$ ,避免变量插值。

根据提示输入两次密码,两次密码一致后,将生成哈希后的密码,添加到docker-compose环境变量下的ADMIN_TOKEN 重启容器,访问域名/admin ,然后输入密码即可。

如果更新密码,请在admin界面的Admin token/Argon2 PHC 处,提前更新密码(即更新config.json里存储的配置)。在不熟悉vaultwarden的config.json文件时,不要尝试直接修改config.json。

如果您不断收到消息 You are using a plain text ADMIN_TOKEN which is insecure. ,则表示您已经通过管理界面保存了设置,并且不会使用环境变量。或者您需要验证是否使用了正确的格式。

使用

使用就比较简单了,直接在Bitwarden客户端/浏览器插件上添加自托管地址即可。

使用时,请在admin或者dockercompose处开启注册功能,注册自己的账户后再关闭注册。