前言

Vaultwarden 是一个用于本地搭建 Bitwarden 服务器的第三方 Docker 项目 Bitwarden是一款自由且开源的密码管理服务,用户可在加密的保管库中存储敏感信息(例如网站登录凭据)

因为github现在要求contributor必须开启2FA验证,但是我又不想用1Password之类的付费服务,正好研究下怎样自己托管一个密码管理服务

我这里使用的Linux发行版是Debian12

构建

配置构建环境

配置rust环境,这里因为是国内云服务所以需要用代理

首先安装rustup,这里参考这个repo

  1. 安装所需依赖(sqlite3后端)

    sudo apt install curl build-essential gcc make libssl-dev pkg-config libsqlite3-dev
    
  2. 下载脚本

    curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf > rust.sh && chmod +x rust.sh
    
  3. 替换下载源

    sed -i 's/${RUSTUP_UPDATE_ROOT:-https:\/\/static.rust-lang.org\/rustup}/https:\/\/mirrors.ustc.edu.cn\/rust-static\/rustup/g' rust.sh
    
  4. 设置环境变量,加速rustup的下载

    这里我使用的是fish shell,编辑配置目录的config.fish并添加以下两行

    set -gx RUSTUP_DIST_SERVER "https://mirrors.ustc.edu.cn/rust-static"
    set -gx RUSTUP_UPDATE_ROOT "https://mirrors.ustc.edu.cn/rust-static/rustup"
    
  5. 运行安装脚本

    ./rust.sh
    

    之后一路回车

编译安装

  1. 首先拉取仓库

    git clone https://githubfast.com/dani-garcia/vaultwarden.git
    
  2. 配置cargo国内镜像源

    看这个,修改cargo.toml,这里不再赘述

  3. 构建后端

    cargo build --features sqlite --release
    

    安装

    sudo install -Dm755 ./target/release/vaultwarden /usr/bin/vaultwarden
    

配置

  1. 创建vaultwarden用户

    sudo useradd -r -U -s /usr/sbin/nologin vaultwarden
    
  2. 创建文件夹,设置权限

    sudo mkdir -p /var/lib/vaultwarden
    sudo chown -R vaultwarden:vaultwarden /var/lib/vaultwarden
    sudo chmod 700 /var/lib/vaultwarden
    
  3. 创建.service文件,使用systemd功能

    /etc/systemd/system/vaultwarden.service

    [Unit]
    Description=Bitwarden Server (Rust Edition)
    Documentation=https://github.com/dani-garcia/vaultwarden
    
    # Only sqlite
    After=network.target
    
    [Service]
    User=vaultwarden
    Group=vaultwarden
    # Use an environment file for configuration.
    EnvironmentFile=/etc/vaultwarden.env
    # The location of the compiled binary
    ExecStart=/usr/bin/vaultwarden
    # Set reasonable connection and process limits
    LimitNOFILE=1048576
    LimitNPROC=64
    # Isolate vaultwarden from the rest of the system
    PrivateTmp=true
    PrivateDevices=true
    ProtectHome=true
    ProtectSystem=strict
    # Only allow writes to the following directory and set it to the working directory (user and password data are stored here)
    WorkingDirectory=/var/lib/vaultwarden
    ReadWritePaths=/var/lib/vaultwarden
    
    [Install]
    WantedBy=multi-user.target
    
  4. 编辑配置文件,可以参考这个

    /etc/vaultwarden.env

    DATA_FOLDER=/var/lib/vaultwarden
    
    # 前端
    WEB_VAULT_FOLDER=/var/lib/web-vault
    WEB_VAULT_ENABLED=false
    
    DOMAIN=https://<你的域名>
    SIGNUPS_ALLOWED=true
    
  5. 配置前端(web vault) 可选

    需要设置WEB_VAULT_ENABLED=true 我这边因为备案原因打不开,就直接用插件不用前端了

    wget https://gh-proxy.com/https://github.com/dani-garcia/bw_web_builds/releases/download/v2024.6.2b/bw_web_v2024.6.2b.tar.gz
    sudo tar -zxvf ./bw_web_v2024.6.2b.tar.gz -C /var/lib/
    

运行

启用systemd服务

sudo systemctl daemon-reload
sudo systemctl enable --now vaultwarden.service

完工

不知道为什么我使用域名没法登录,只能直接使用ip,可能是有什么地方没配好 使用浏览器插件或者是客户端登录使用即可