在个人隐私毫不安全的年代。 密码太多记不住、密码太简单容易被撞库怎么办? 当然是自建个人密码库啦!使用自带的生成器生成不低于 16位及以上的密码!,再也不用担心被撞库了!
bitwarden_rs
官方原版教程(英文):https://github.com/dani-garcia/bitwarden_rs/wiki
直接使用 docker 拉取容器,使用命令+参数运行
使用 SQLite 存储数据的初始化(初次使用无证书,记得反代启用 SSL 证书,否则客户端无法连接)
docker stop rsdocker rm rsdocker run -d --name rs \ -e DOMAIN=http://ip或域名:8088 \ -e ADMIN_TOKEN=HWsaw6Vjmz46BReN\ -v /home/bw-data/:/data/ \ -p 8088:80 \ vaultwarden/server:latestdocker 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 rsdocker rm rsdocker run --name rs --restart=always -d -v /home/bw-data/:/data/ -p 8088:80 vaultwarden/server:latestdocker 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 }}' rsdocker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' rsdocker 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 bashecho Info:bitwardenrs 开始docker pull vaultwarden/server:latestdocker stop rsdocker rm rs#cleardocker run --name rs --restart=always -d -v /opt/bitwarden/:/data/ -p 8088:80 vaultwarden/server:latest#cleardocker image prune -fecho Info:bitwardenrs 完成echo Info:以下为实时日志 docker logs --tail 30 -f rsEOF然后执行 bash /root/qdrs.sh
数据备份
- SQLite3数据库
应该使用自带的的 sqlite3 backup 命令备份 sqlite3数据库。如果在数据库工作期间进行备份,这将确保数据库不会损坏。
mkdir /home/bw-data/db-backupsqlite3 /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 rsdocker 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:latestdocker stop rs开始将 SQLite 转换成 MySQL 的 sql
cd /home/bw-datasqlite3 db.sqlite3 .dump > sqlitedump.sqlgrep INSERT INTO sqlitedump.sql grep -v __diesel_schema_migrations > mysqldump.sqlrm -f sqlitedump.sql2020年 5月 6日 然后报错了。。。找了半天是双引号的问题。。。
# 替换引号sed -i s#\#\#g mysqldump.sql导入 sql 到数据库
mysql -ubitwarden_rs -pjRts8Vec6RwcoDn6use bitwarden_rssource /home/bw-data/mysqldump.sqlexit然后启动 bitwarden_rs
docker start rsdocker logs --tail 30 -f rs