在个人隐私毫不安全的年代。
密码太多记不住、密码太简单容易被撞库怎么办?
当然是自建个人密码库啦!!!使用自带的生成器生成不低于16位及以上的密码!,再也不用担心被撞库了!

Docker

安装容器可参考下方文章

docker

2020-3-26 0

bitwarden_rs

官方原版教程(英文):https://github.com/dani-garcia/bitwarden_rs/wiki

直接使用docker拉取容器,使用命令+参数运行

使用SQLite存储数据的初始化(初次使用无证书,记得反代启用SSL证书,否则客户端无法连接)

docker stop rs
docker rm rs
docker run -d --name rs \
  -e DOMAIN=http://ip或域名:8088 \
  -e ADMIN_TOKEN=HWsaw6Vjmz46BReN\
  -v /home/bw-data/:/data/ \
  -p 8088:80 \
  vaultwarden/server:latest
docker logs --tail 30 -f rs

第一次运行。需要初始化设置域名、管理员密码。请改成你自己的在运行!

docker logs --tail 30 -f rs 为容器日志查看。一般无问题的话可按CTRL+C取消查看

登陆后台

如果初始化密码的时候忘记改了,可以登陆后在后台修改 ,也可以改配置文件

ip:8088/admin

登陆后可修改各种参数,记得点击保存按钮。也可使用下方配置文件脚本直接写入

配置文件设置

cat > /home/bw-data/config.json<<-EOF
{
  "domain": "https://ip或域名:8088",
  "disable_icon_download": false,
  "signups_allowed": false,
  "signups_verify": false,
  "signups_verify_resend_time": 3600,
  "signups_verify_resend_limit": 6,
  "invitations_allowed": true,
  "password_iterations": 100000,
  "show_password_hint": true,
  "admin_token": "HWsaw6Vjmz46BReN",
  "invitation_org_name": "Bitwarden_RS",
  "ip_header": "X-Real-IP",
  "icon_cache_ttl": 2592000,
  "icon_cache_negttl": 259200,
  "icon_download_timeout": 10,
  "icon_blacklist_non_global_ips": true,
  "disable_2fa_remember": false,
  "authenticator_disable_time_drift": false,
  "require_device_email": false,
  "reload_templates": false,
  "disable_admin_token": false,
  "_enable_yubico": false,
  "_enable_duo": false,
  "_enable_smtp": false,
  "smtp_host": "smtpdm.aliyun.com",
  "smtp_ssl": true,
  "smtp_explicit_tls": true,
  "smtp_port": 465,
  "smtp_from": "xxxx@发信域名",
  "smtp_from_name": "迷失安全密码库_Bitwarden_RS",
  "smtp_username": "发信用户名",
  "smtp_password": "发信密码",
  "smtp_timeout": 15,
  "_enable_email_2fa": true,
  "email_token_size": 6,
  "email_expiration_time": 600,
  "email_attempts_limit": 3
}
EOF

然后用新的命令启动容器

  • 启动SQLite
docker stop rs
docker rm rs
docker run --name rs --restart=always -d -v /home/bw-data/:/data/ -p 8088:80 vaultwarden/server:latest
docker logs --tail 30 -f rs
# --restart=always 表示启动容器后自动启动此镜像。
docker run --name rs --restart=always -d -v /home/bw-data/:/data/ -p 8088:80 vaultwarden/server:latest
# 容器名称简写为rs,方便手动重启镜像,例如:docker restart rs
# 8080:80 将本地8080端口映射到容器80端口,然后使用caddy或者nginx反向代理本机的8080端口.并且安装ssl证书

如果你的docker/ bitwarden_rs在具有固定IP的设备上运行,则可以将主机端口绑定到该特定IP,从而避免将主机端口暴露给外网。

如下所示,在主机端口和容器端口前面添加IP地址(例如192.168.0.2):

docker run --name rs --restart=always -d -v /home/bw-data/:/data/ -p 192.168.0.2:8088:80 vaultwarden/server:latest

查看容器IP

docker inspect --format '{{ .NetworkSettings.IPAddress }}'  rs
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' rs
docker inspect rs

获取宿主机IP

ip address show docker0

升级容器

# 升级SQLite bitwardenrs代码
docker pull vaultwarden/server:latest
# 关闭容器
docker stop rs
# 杀死已经运行的容器
#docker kill rs
# 杀死并删除旧容器
docker rm -f rs
# 然后运行上面的run代码启动
# 运行正常~删除无用旧镜像
docker image prune -f

自用升级脚本(自行修改pull的类型)

cat > /root/qdrs.sh<<-EOF
#!/usr/bin/env bash
echo "Info:bitwardenrs 开始"
docker pull vaultwarden/server:latest
docker stop rs
docker rm rs
#clear
docker run --name rs --restart=always -d -v /opt/bitwarden/:/data/ -p 8088:80 vaultwarden/server:latest
#clear
docker image prune -f
echo "Info:bitwardenrs 完成"
echo "Info:以下为实时日志 docker logs --tail 30 -f rs"
EOF

然后执行 bash /root/qdrs.sh

数据备份

  • SQLite3数据库

应该使用自带的的sqlite3 backup命令备份sqlite3数据库。如果在数据库工作期间进行备份,这将确保数据库不会损坏。

mkdir /home/bw-data/db-backup
sqlite3 /home/bw-data/db.sqlite3 ".backup '/home/bw-data/db-backup/backup.sqlite3'"

Mysql数据库教程网络很多。可搜索下。。暂时不写

  • 附件文件夹

默认情况下,它位于 /home/bw-data/attachments

  • 密钥文件(可选备份)

它们仅用于存储当前登录用户的令牌,删除令牌只会将每个用户注销,从而要求他们再次登录。

默认情况下,它们位于/home/bw-data。有3个文件: rsa_key.der、 rsa_key.pem、rsa_key.pub.der。

  • 网站图标缓存(可选备份)

图标缓存可以自行重新下载,但是如果缓存很大,则可能需要很长时间。 默认情况下,它位于/home/bw-data/icon_cache

从SQLite切换到Mysql

之前再下就一个人使用,所以使用了SQLite数据库。

后来带上小伙伴以及盆友等等,人就多起来了。

考虑到SQLite的效率比不上Mysql,且Mysql用APPNODE备份很方便。故此进行迁移

从SQLite迁移到MySQL

首先嘛,创建 数据库、专用用户名、专用密码(记得改成你自己的再执行)

教程使用的库:bitwarden_rs 用户名:bitwarden_rs 密码:jRts8Vec6RwcoDn6 容器镜像IP:172.17.0.2

mysql -uroot -p
# 输入密码后回车,然后继续
CREATE DATABASE `bitwarden_rs` COLLATE 'utf8_general_ci';
# 下面为你的数据库用户名、镜像IP、密码。
CREATE USER 'bitwarden_rs'@'localhost' IDENTIFIED BY 'jRts8Vec6RwcoDn6';
GRANT ALL ON `bitwarden_rs`.* TO 'bitwarden_rs'@'localhost';
CREATE USER 'bitwarden_rs'@'172.17.0.2' IDENTIFIED BY 'jRts8Vec6RwcoDn6';
GRANT ALL ON `bitwarden_rs`.* TO 'bitwarden_rs'@'172.17.0.2';
FLUSH PRIVILEGES;
exit

停止旧的镜像,启用一次Mysql的bitwarden_rs镜像

docker stop rs
docker run -d --name rs --restart=always \
-e DATABASE_URL='mysql://bitwarden_rs:jRts8Vec6RwcoDn6@172.17.0.1:3306/bitwarden_rs' \
-e ENABLE_DB_WAL='false' \
-v /home/bw-data/:/data/ \
-p 8088:80 \
bitwardenrs/server-mysql:latest
docker stop rs

开始将SQLite转换成MySQL的sql

cd /home/bw-data
sqlite3 db.sqlite3 .dump > sqlitedump.sql
grep "INSERT INTO" sqlitedump.sql | grep -v "__diesel_schema_migrations" > mysqldump.sql
rm -f sqlitedump.sql

2020年5月6日 然后报错了。。。找了半天是双引号的问题。。。

# 替换引号
sed -i s#\"#\#g mysqldump.sql

导入sql到数据库

mysql -ubitwarden_rs -pjRts8Vec6RwcoDn6
use bitwarden_rs
source /home/bw-data/mysqldump.sql
exit

然后启动bitwarden_rs

docker start rs
docker logs --tail 30 -f rs