bitwarden_rs
- Linux
- 2020-05-06
- 613热度
- 0评论
在个人隐私毫不安全的年代。
密码太多记不住、密码太简单容易被撞库怎么办?
当然是自建个人密码库啦!!!使用自带的生成器生成不低于16位及以上的密码!,再也不用担心被撞库了!
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
- 密钥文件(可选备份)
它们仅用于存储当前登录用户的令牌,删除令牌只会将每个用户注销,从而要求他们再次登录。
默认情况下,它们位于<span class="color" style="color:#0693e3">/home/bw-data</span>
。有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:[email protected]: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