教程[4] 在 Arch Linux 自建 vaultwarden 服务端

bitwarden_rs 项目已经换名字了 现在叫 vaultwarden

开篇废话 && 比较

市面上已经有很多密码管理工具了,比如我之前用的 1password keepass lastpass enpass 等,全开源能自建服务端体验还正常点的的好像就只有 bitwarden 了

目前市面上 bitwarden 服务端有两种,一种是官方的,一种是民间版本,这里我简单地做下比较

类型 bitwarden vaultwarden
编写语言 dotnet Rust
数据库 MSSQL Mysql/Sqlite/PostgreSQL

很明显,官方的版本在运行时的体积要比rust版更大,所以我选择了 vaultwarden
当然 两者都有 docker image 可以快速部署(不过我没有采用这个)

安装

这里我使用的是 ArchLinux

pacman -S vaultwarden vaultwarden-web

即可

默认配置地址在 /etc/vaultwarden.env 里面,我们随便来配置一下,主要要配置的项目如下表所示

项目 描述
ROCKET_ADDRESS 127.0.0.1 绑定地址
ROCKET_PORT 8000 绑定端口
WEBSOCKET_ENABLED true 启用 websocket(启用后密码同步会更即时)
WEBSOCKET_ADDRESS 127.0.0.1 websocket 绑定地址
WEBSOCKET_PORT 3012 websocket 端口
SIGNUPS_ALLOWED true 允许注册,在自己注册完后可以关掉
WEB_VAULT_ENABLED true 开启网页版(实际上我的nginx下这个配置是无效的)
IP_HEADER CF-Connecting-IP 真实ip的header 这里我用cf 所以是这个 其它cdn什么的可以用 X-Forwarded-For
DATABASE_URL data/db.sqlite3 这里我懒得用mysql之类的了 直接sqlite就好了 要其它的可以按照注释改

基本上配置上面的那些就够了
配置文件的格式是 项目=值 这里照着文件改改就好了(要把#注释干了)
这是我的配置参考 链接
这些改完后 我们直接启动服务就好了~(顺便开机自启下)

systemctl enable vaultwarden --now

不出意外的话 服务就启动了
systemd_bitwarden_status

~# netstat -tnlp | grep vaultwarden
tcp        0      0 127.0.0.1:3012          0.0.0.0:*               LISTEN      25861/vaultwarden  
tcp        0      0 127.0.0.1:8000          0.0.0.0:*               LISTEN      25861/vaultwarden  

接下来就是配置 nginx 并且下载网页版的内容了

server {
    server_name 你的域名;
    listen 80; # 建议自行更改成ssl配置
    root /usr/share/vaultwarden-web;
    index index.html;
    location /api {
            proxy_pass http://127.0.0.1:8000; # 和 ROCKET_ADDRESS 一样 以下同理
    }
    location /identity {
            proxy_pass http://127.0.0.1:8000;
    }
    location /notifications/hub {
        proxy_pass http://127.0.0.1:3012; # 为ws地址
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
    location /notifications/hub/negotiate {
        proxy_pass http://127.0.0.1:8000;
    }
}

nginx -t 检查配置文件都ok后 重启nginx (可以是 nginx -s reload 或者 systemctol reload nginx)

接着我们浏览器打开,基本就可以正常使用了
bitwarden_web_page

客户端自定义下域名 也可以用了 bitwarden_client_set-hostname

教程就水到这里了 再见~