自建vaultwarden保护密码安全
本文最后更新于 560 天前,其中的信息可能已经有所发展或是发生改变。

bitwarden的密码默认是储存在官方有服务器上,当然是加密存储的。官方为了方便用户,也提供docker方式在自己的服务器安装该密码管理服务。安装官方的镜像对服务器的要求高,由于官方使用的是mssql,内存必需大于2G,对于小内存机器来说是跑不起来的。

不过在github上有vaultwarden(为了便于与官方区别,bitwarden_rs已更名为vaultwarden),这个是用rust写的docker镜像,对服务器要求较低,小内存照样能用。具体详见:https://github.com/dani-garcia/vaultwarden/

准备

一台vps
一个能正常访问网络的环境
一个已经申请ssl证书的域名

开始

安装docker

请自行查询安装,教程到处都是

安装vaultwarden

首先拉取docker镜像

docker pull vaultwarden/server:latest

进行默认安装(我这里映射到了6589端口,可根据你的需求自行改变)

docker run -d --name vaultwarden -v /bw-data/:/data/ -p 6589:80 vaultwarden/server:latest

配置nginx反代

如果你在使用宝塔面板,像我这样进行配置即可(替换为上文提到的你自己的端口)

如果没有,请参看官方配置文件:https://github.com/dani-garcia/vaultwarden/wiki/Proxy-examples

使用

登入后设置你的电子邮箱(随意,只要格式是 xxx@xxx.xxx即可)和主密码(重要!建议纸笔记下来

使用相应客户端/chrome插件填写你的域名,管理员密码等信息即可

进一步设置

在工具一栏中可以选择导入导出密码库

依照引导为你的vaultwarden添加安全密钥验证(我这里使用的yubikey)


首先申请你的yubikey api并妥善保管 :https://upgrade.yubico.com/getapikey/

停止运行你的vaultwarden docker并且添加如下环境变量后启动
停止运行:

docker stop vaultwarden

添加环境变量运行(逐条输入“>”后内容)

 docker run -d --name bitwarden \
> -e YUBICO_CLIENT_ID=***** \
> -e YUBICO_SECRET_KEY=********************** \
> -e SIGNUPS_ALLOWED=false \
> -v /bw-data/:/data/ \
> -p 6589:80 \
> vaultwarden/server:latest

重新登陆并且按照引导设置yubikey即可

一些其他设置

本部分本人没有实践,搬运自相关文章和wiki,如果你没有需求,请不要乱动了

当然vaultwarden也是可以自定义安装,这个自定义是指相关的docker配置,下面简单介绍一下。

1、自行选择安装目录,如安装到/home/vaultwarden:

cd /data && mkdir vaultwarden && cd vaultwarden
2、准备一个配置文件config.env,里面包含了需要配置的环境变量:

cat >> config.env <<EOF
写入基本的环境配置(其它配置可在在安装好后进后台进行设置):

# 启用或禁用新用户注册:true启用,false禁用
SIGNUPS_ALLOWED=true
# 设置web访问域名
DOMAIN=https://vault.yourdomain.com
# 设置SQLites数据库存储路径及数据库名
DATABASE_URL=data/vaultwarden.db
# 是否启用web客户端:true启用,false禁用
WEB_VAULT_ENABLED=true
# 启用管理后台并设置token,默认为空不启用,设置token后则启用
ADMIN_TOKEN=XXXXXXXXXXXX
# 是否启用WebSocket通知:true启用,false禁用
WEBSOCKET_ENABLED=false
# 设置日志路径
LOG_FILE=data/access.log
# 日志级别选项:trace、debug、info、warn、error 以及 off
LOG_LEVEL=warn
EXTENDED_LOGGING=true
EOF

DOMAIN填自己的域名,需要HTTPS。

这个环境配置文件不包含smtp发送邮件等配置,如果需要邮件功能,需要增加smtp的设置,可一并写入环境配置文件,相关设置说明如下(不一定非要写入环境文件,也可以按上面的基本配置安装完成后,进入后台界面进行设置):

# 启用或禁用新用户注册:true启用,false禁用
SIGNUPS_ALLOWED=false

# 设置web访问域名
DOMAIN=https://vault.yourdomain.com

# 设置SQLites数据库存储路径及数据库名
DATABASE_URL=data/vaultwarden.db

# 设置日志路径
LOG_FILE=data/access.log

# 日志级别选项:trace、debug、info、warn、error 以及 off
LOG_LEVEL=warn
EXTENDED_LOGGING=true

# 启用管理后台并设置token,默认为空不启用,设置token后则启用
ADMIN_TOKEN=XXXXXXXXXXXX

# 是否启用WebSocket通知:true启用,false禁用
WEBSOCKET_ENABLED=true

# 是否启用web客户端:true启用,false禁用
WEB_VAULT_ENABLED=true

# 修改线程,默认为10,若用户多可修改为更大,一般默认不需要设置
ROCKET_WORKERS=20

# 显示密码提示:true启用,false禁用
SHOW_PASSWORD_HINT=false

# 设置SMTP
SMTP_HOST=smtp.test.com
SMTP_FROM=test@test.com
SMTP_PORT=465
SMTP_USERNAME=test@test.com
SMTP_PASSWORD=password
# 自v1.25.0起,不再设置SMTP_SSL和SMTP_EXPLICIT_TLS,使用SMTP_SECURITY替代,它有以下选项:starttls、force_tls和off。
# 465端口使用force_tls,587端口使用starttls,25端口使用off。
SMTP_SECURITY=force_tls

# 启用或禁用邀请:true启用,false禁用
INVITATIONS_ALLOWED=false

# 启用或禁用分享发送功能,默认开启,启用true,禁用false
SENDS_ALLOWED=false

EOF

当然也可以在安装好后,进管理后台的界面设置smtp参数,不过要记得将Use explicit TLS(vaultwarden中的Force TLS选项)打上勾,然后保存即可,否则可能发送邮件会出错。

ADMIN_TOKEN为管理面板密码,推荐使用“openssl rand -base64 48”生成,当然也可以随意。

SIGNUPS_ALLOWED=true,此项控制注册,第一次使用的话设置为true,若是备份有数据库,可设置为false,安装好后将DATABASE_URL指定路径中的数据库替换为备份的db重启docker即可。

上述详细的环境变量说明请参阅:https://github.com/dani-garcia/vaultwarden/wiki

3、准备服务描述文件docker-compose.yml:

cat >> docker-compose.yml <<EOF
写入:

version: '3'

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: always
    volumes:
      - /docker/data:/data
    env_file:
      - config.env
    ports:
      - "6666:80"
      - "8888:3012"
EOF

vaultwarden:现在是唯一一个服务;

image: vaultwarden/server:latest 指定使用 Docker Hub 的 vaultwarden/server:latest 最新镜像;

volumes 中指定将容器内的 /data 目录挂载到宿主机的当前目录下的 /docker/data 目录,这样你可以在宿主机上执行数据库的备份操作;

ports 指定分别将容器内的 80和3012 端口映射到了宿主机的 6666和8888 端口;

3、拉取镜像:

docker-compose up -d
4、nginx配置反代(其它web方式请参阅:https://github.com/dani-garcia/vaultwarden/wiki/Proxy-examples):

server {
listen 443 ssl http2;
server_name vault.yourdomain.com;

# Specify SSL config if using a shared one.
#include conf.d/ssl/ssl.conf;

# Allow large attachments
client_max_body_size 128M;

location / {
proxy_pass http://<SERVER>:6666;
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;
}

location /notifications/hub {
proxy_pass http://<SERVER>:8888;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}

location /notifications/hub/negotiate {
proxy_pass http://<SERVER>:6666;
}

# Optionally add extra authentication besides the AUTH_TOKEN
# If you don't want this, leave this part out
location /admin {
# See: https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-http-basic-authentication/
auth_basic "Private";
auth_basic_user_file /path/to/htpasswd_file;

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://<SERVER>:6666;
}

}

5、设置开机启动:

编辑rc.local文件:

vi /etc/rc.d/rc.local
在最后加上

/usr/local/bin/docker-compose -f /usr/local/vaultwarden/docker-compose.yml up -d
这样开机就会自动启动vaultwarden。

访问 https://你的域名/admin 可以进管理面板。

到这里vaultwarden就搭建完成可以使用了,不过个人还是建议配置数据备份。

6、如果修改了配置,需要重新启动容器以便生效:

docker-compose stop && docker-compose up -d
用这个命令,停止当前容器服务并重新启动。

docker-compose down && docker-compose up -d
这个命令是移除容器和镜像并重建。

博客内容均系原创,未经允许严禁转载!
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇