前言

  • 系统环境为 Debian
  • 使用了非官方的 Vaultwarden 而不是官方版本是因为该版本占用终极低
  • 该版本存在一定的同步问题 (ws通讯),介意请用官方版本
  • 文章采用 Argo Tunnel 作为对外通讯手段,可自行选择其他隧道

安装 Docker

  1. 安装前置组件

    1
    sudo apt-get install ca-certificates curl gnupg lsb-release
  2. 添加官方GPG公钥

    1
    curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  3. 添加Docker stable源 (其他版本的安装自行查看官方文档)

    1
    2
    3
    echo \
    "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
    $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  4. 安装Docker套装 (包括docker-compose)

    1
    2
    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-compose
  5. 启动Docker

    1
    2
    systemctl enable docker
    systemctl start docker

安装 Argo Tunnel

  1. 请参考我的另一篇文章安装 创建 并解析到域名,完成配置文件创建

  2. 配置文件编写

    1
    2
    3
    4
    5
    6
    7
    8
    9
    tunnel: <TUNNEL_ID>
    credentials-file: /主目录/.cloudflared/<TUNNEL_ID>.json

    ingress:
    - hostname: <DOMAIN>
    service: http://localhost:443
    originRequest:
    noTLSVerify: true
    - service: http_status:404
  3. 添加到服务

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #运行以下命令创建服务
    cloudflared service install
    #运行以下命令启动服务
    systemctl start cloudflared
    #运行以下命令设置开机自启
    systemctl enable cloudflared
    #运行以下命令查看服务状态
    systemctl status cloudflared
    #运行以下命令关闭服务
    systenctl stop cloudflared

安装 Valutwarden

  1. 创建 docker-compose.yml 文件并写入以下信息

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    version: '3'

    services:
    bitwarden:
    image: vaultwarden/server:latest
    container_name: bitwarden
    restart: always
    environment:
    - ROCKET_TLS={certs="/ssl/certs.pem",key="/ssl/key.pem"}
    - INVITATIONS_ALLOWED=false
    - SIGNUPS_ALLOWED=true #记得在注册完管理员账户后取消
    - ADMIN_TOKEN= #此处填写足够长的随机字符 32+
    - DOMAIN= #填写刚刚注册的域名 https://example.com
    - _ENABLE_SMTP=false
    - IP_HEADER=CF-Connecting-IP
    - LOG_LEVEL=error
    - EXTENDED_LOGGING=true
    - EMERGENCY_ACCESS_ALLOWD=false
    - _ENABLE_YUBICO=false
    volumes:
    - ./data/:/data/
    - ./ssl/:/ssl/
    ports:
    - 127.0.0.1:40443:80
  2. 同目录下创建ssl文件夹, 到Cloudflare申请客户端证书 注意仅支持RSA2048, 创建certs.pem将公钥填写进 创建key.pem填写私钥

  3. 运行docker

    1
    sudo docker-compose up -d
  4. 打开网页,因为已经设置了Argo Tunnel,使用域名即可

  5. 注册一个账户

  6. 修改docker-compose.yml文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    version: '3'

    services:
    bitwarden:
    image: vaultwarden/server:latest
    container_name: bitwarden
    restart: always
    environment:
    - ROCKET_TLS={certs="/ssl/certs.pem",key="/ssl/key.pem"}
    - INVITATIONS_ALLOWED=false
    - SIGNUPS_ALLOWED=false
    - ADMIN_TOKEN= #此处填写足够长的随机字符 32+
    - DOMAIN= #填写刚刚注册的域名 https://example.com
    - _ENABLE_SMTP=false
    - IP_HEADER=CF-Connecting-IP
    - LOG_LEVEL=error
    - EXTENDED_LOGGING=true
    - EMERGENCY_ACCESS_ALLOWD=false
    - _ENABLE_YUBICO=false
    volumes:
    - ./data/:/data/
    - ./ssl/:/ssl/
    ports:
    - 127.0.0.1:40443:80

后记

因为这个的安装真的很复杂,存在大量设置需要修改,这只是一个我用起来最舒服的版本。这个文章看起来少,对于整个项目的调试花了接近半天才找出这么一个较为完善的版本,未来文章可能还会多次修改。

参考

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

https://bitwarden.com/help/

https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/