编译 vaultwarden
Bitwarden 开源 密码管理服务 用户加密的保管库中保存敏感信息 如网站登录凭证
Bitwarden 多种客户端 云端托管服务 支持自行部署解决方案 Bitwarden官方提供的自行部署 1C+2G+12G 资源要求太离谱
vaultwarden开发团队提供的Docker镜像也比较重 编译安装 现成的MySQL vaultwarden支持SQLite、MySQL和PostgreSQL
准备环境 centos Nginx MySQL
软件包及相关依赖
yum update -y
yum install git nano curl wget htop pkg-config openssl libssl1.1 libssl-dev -y
yum install build-essential -yRust环境配置
curl https://sh.rustup.rs -sSf | sh
出现 Rust is installed now. Great!
安装Rust完成
/root/.cargo/bin/rustc
拉取最新版本的vaultwarden
git clone https://github.com/dani-garcia/vaultwarden && cd vaultwarden编译 vaultwarden MySQL 后端支持版本
cargo clean && cargo build --features sqlite,mysql --release编译的时间比较长,耐心等待
编译好的二进制文件移动到/usr/bin
cp target/release/vaultwarden /usr/bin/vaultwarden
chmod +x /usr/bin/vaultwarden配置用户和新建相关文件夹
# vaultwarden -v
vaultwarden 1.37.2-a6c3bd6d
Web-Vault Version file missing
useradd -s /sbin/nologin -M vaultwarden
mkdir -p /data/vaultwarden/data
chown -R vaultwarden:vaultwarden /data/vaultwarden/
部署Web UI查询最新版本
https://github.com/dani-garcia
wget https://github.com/dani-garcia/bw_web_builds/releases/download/v2026.7.0/bw_web_v2026.7.0.tar.gz
tar -xfvc bw_web_v2026.7.0.tar.gz /data/vaultwarden/
编辑配置文件
vim /etc/vaultwarden.env
简单配置内容
DATABASE_URL=mysql://[数据库用户名]:[数据库密码]@127.0.0.1:3306/[数据库名]
具体配置方法和说明可以在vaultwarden上的项目内的 template 文件内找到
ROCKET_PORT=8000
DATA_FOLDER=/data/vaultwarden/data/
DATABASE_URL=mysql://vaultwarden:vaultwarden@127.0.0.1:3306/vaultwarden
IP_HEADER=X-Real-IP
WEB_VAULT_FOLDER=/data/vaultwarden/web-vault/
WEB_VAULT_ENABLED=true
ADMIN_TOKEN=YOUR_ADMIN_TOKEN
DOMAIN=https://vw.facesoho.com
SIGNUPS_ALLOWED=true
有几点说明
vaultwarden的配置可以通过
.env文件
config.json文件
admin面板来实现
admin面板配置 实际上就会生成一个config.json文件保存在/data/vaultwarden/data/
config.json文件内保存的配置会掩盖 .env 中的配置 所以配置方法二选一
ADMIN_TOKEN选项开启且填写字符串后开启admin面板,注释这一项则关闭admin面板
YOUR_ADMIN_TOKEN
ADMIN_TOKEN需要通过argon2生成一个字符串散列(vaultwarden开发团队建议)
SIGNUPS_ALLOWED 为关闭新用户注册,可以先注册好需要的用户后关闭
使用argon2来生成PHC字符串散列
echo -n “你的密码” | argon2 “$(openssl rand -base64 32)” -e -id -k 65540 -t 3 -p 4
echo -n “^PassW0rd@vaultwarden$” | argon2 “$(openssl rand -base64 32)” -e -id -k 65540 -t 3 -p 4
生成一个类似如下的字符串:
$argon2id$v=19$m=65540,t=3,p=4$SGgwNAEP38J6gM8FGE3kMkciNrOBd8
创建系统服务
vim /etc/systemd/system/vaultwarden.service
[Unit]
Description=vaultwarden Server
Documentation=https://github.com/dani-garcia/vaultwarden
After=network.target mysqld.service
Requires=mysqld.service
[Service]
User=vaultwarden
Group=vaultwarden
EnvironmentFile=/etc/vaultwarden.env
ExecStart=/usr/bin/vaultwarden
LimitNOFILE=1048576
LimitNPROC=64
PrivateTmp=true
PrivateDevices=true
ProtectHome=true
ProtectSystem=strict
WorkingDirectory=/data/vaultwarden/
ReadWriteDirectories=/data/vaultwarden/
AmbientCapabilities=CAP_NET_BIND_SERVICE
[Install]
WantedBy=multi-user.target
这里需要注意的是After和Requires两个项的配置
需要根据目标系统MySQL的安装方式来确定,如果是通过包管理器安装的MySQL
则需要将 mysql.service 改为 mysqld.service
在/etc/systemd/system下查看
启动 vaultwarden
systemctl daemon-reload
systemctl enable --now vaultwarden.service
systemctl start vaultwarden.service
systemctl status vaultwarden.service
配置Nginx反代 首先域名要有SSL证书
反代可以参考如下配置
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
add_header Cache-Control no-cache;
}
这时候访问域名即可使用vaultwarden了
上一篇: CentOS 安装 Rust
下一篇: CentOS SSH服务与防火墙
