self-hosted 基于 pre-build binary file 和 nginx 搭建 (vaultwarden)bitwarden __2023年6月30日 __3条评论 __326次阅读 __0人点赞 __Tao_Qi 闲来无事, 水个教程 恳请 精, 欢迎投喂 1. 提取可执行文件 不想装 docker, 官方没提供预编译二进制文件, 要自己从 docker image 中提取 官方给的代码如下 不要跑这个, 下面有一键脚本
[code]
mkdir vw-image
cd vw-image
wget https://raw.githubusercontent.com/jjlin/docker-image-extract/main/docker-image-extract
chmod x docker-image-extract
./docker-image-extract vaultwarden/server:alpine
ls -ld output/{vaultwarden,web-vault}
[/code]
只需要用到 ./output/vaultwarden 文件 和 ./output/web-vault/ 目录 注意 ./vaultwarden 运行目录下需要有 data/ 目录 2. 配置文件 .env 运行 vaultwarden 的时候默认会读取 .env 文件加载配置 简单解释下用到的配置
[code]
# 域名, 这里设置 sub-location 为 vaultwarden
# 需要配合 nginx 配置
DOMAIN=https://nodeseek.com/vaultwarden/
# 进入后台 **超级权限** 面板命令
# 需要通过 `./vaultwarden hash` 生成
ADMIN_TOKEN='$argon2id$v=19$m=65540,t=3,p=4$NLnz/Xmt8kyBsTziQ4uqG3EV2ScmD9QRkZkw k4kp94$S4c2Ke1KYhVoHp6idDkroAQx8XhyTCnoaEntAIElcps'
# 不允许注册新用户
# 个人用, 要加帐号直接通过管理员权限加
SIGNUPS_ALLOWED=false
# 懒得配置邮箱, 密码提示直接前端显示
SHOW_PASSWORD_HINT=true
[/code]
3. nginx 配置 sub-location 如果你想通过域名直接访问(如 https://nodeseek.com), 那可以跳过这节
[code]
upstream vaultwarden-default {
zone vaultwarden-default 64k;
server 127.0.0.1:8000; # 记得对应你的端口
keepalive 2;
}
upstream vaultwarden-ws {
zone vaultwarden-ws 64k;
server 127.0.0.1:3012; # 记得对应你的端口
keepalive 2;
}
server {
listen 443 ssl;
server_name nodeseek.com;
# 其他配置
# vaultwarden
location /vaultwarden/ {
proxy_http_version 1.1;
proxy_set_header "Connection" "";
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 X-Forwarded-Proto $scheme;
proxy_pass http://vaultwarden-default;
}
# DO NOT add a trailing /, else you will experience issues
location /vaultwarden/notifications/hub/negotiate {
proxy_http_version 1.1;
proxy_set_header "Connection" "";
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 X-Forwarded-Proto $scheme;
proxy_pass http://vaultwarden-default;
}
# DO NOT add a trailing /, else you will experience issues
location /vaultwarden/notifications/hub {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Forwarded $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://vaultwarden-ws;
}
[/code]
4. 配置 ubuntu/debian service
[code]
[Unit]
Description=Bitwarden Server (Rust Edition)
Documentation=https://github.com/dani-garcia/vaultwarden
# Only sqlite
After=network.target
[Service]
EnvironmentFile=/etc/vaultwarden/.env
ExecStart=/usr/bin/vaultwarden
WorkingDirectory=/etc/vaultwarden/
[Install]
WantedBy=multi-user.target
[/code]
5. 脚本 跑完下面的脚本后
- 可执行文件
vaultwarden在/usr/bin/目录下 - 你需要编写
/etc/vaultwarden/.env文件 - 你需要配置 nginx
- 通过
systemctl start vaultwarden命令开启服务
[code]
#!/bin/bash
if [ "$EUID" -ne 0 ]
then echo "Please run as root"
exit 1
fi
green_output() {
echo -e "\033[0;32m$1\e[0m"
}
TMP=$(mktemp -d) && cd "$TMP" || exit
# extract docker image
wget https://raw.githubusercontent.com/jjlin/docker-image-extract/main/docker-image-extract
chmod x ./docker-image-extract
./docker-image-extract vaultwarden/server:alpine
mkdir -p /etc/vaultwarden/data/
mv ./output/web-vault /etc/vaultwarden/
mv ./output/vaultwarden /usr/bin/
rm -rf "$TMP"
# config
cat >> /etc/vaultwarden/.env <> /etc/systemd/system/vaultwarden.service <<EOF
[Unit]
Description=Bitwarden Server (Rust Edition)
Documentation=https://github.com/dani-garcia/vaultwarden
# Only sqlite
After=network.target
[Service]
EnvironmentFile=/etc/vaultwarden/.env
ExecStart=/usr/bin/vaultwarden
WorkingDirectory=/etc/vaultwarden/
[Install]
WantedBy=multi-user.target
EOF
systemctl enable vaultwarden
green_output 'vaultwarden has been installed'
green_output 'you need to edit /etc/vaultwarden/.env to add your domain and admin token'
green_output 'do not forget to config nginx'
[/code]
6. tip
- 访问
DOMAIN/admin来进入管理界面 如果你的 DOMAIN 配置是https://nodeseek.com就进https://nodeseek.com/admin如果是https://nodeseek.com/vaultwarden/进https://nodeseek.com/vaultwarden/admin一般不用进, 除了添加用户 (如果你允许新用户注册, 那这个界面基本不用进) - 在管理界面输入邀请用户邮箱后, 该邮箱可直接注册
- 一定要开启 https
- 如果想隐藏服务, sublocation 可以设置的长一点
7. 声明 本教程基于 官方wiki
dizzydz说道: 2023年7月10日 下午4:35
polyanthusun说道: 2023年7月12日 上午6:55
哦开心说道: 2023年7月12日 上午8:41
发表回复 取消回复电子邮件地址不会被公开。必填项已用 标注 __ __
本文著作权归作者 [ doudoudoubao ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。