关于自建bitwarden以及日常备份数据到OneDrive

写在前面的话[小声逼逼]:非计科出身,写的有点糙,仅自用的,让佬友们见笑了!!如果有问题的,麻烦佬友们指点一二,我好尽快修改优化一下!!非常感谢!



用Bitwarden的大佬们都说好
1,可以实现自建和备份
2,可以上传一些浏览器的密码库的备份数据
3,对于iOS用户,可以实现密码自动填充

Docker run 一键安装

docker run -d --name Bitwarden \
-e SIGNUPS_ALLOWED=true \
-e TZ=Asia/Shanghai \
-v /home/bitwarden/:/data/ \
-p 8080:80 \
--restart=always \
vaultwarden/server:latest

其中:SIGNUPS_ALLOWED变量是是否开启注册,因为建立完毕之后,超管密码是随机的,且没有必要使用超管功能,直接自己注册即可。

端口映射根据自身需求,如果使用nginx反代前置的话,可以只监听127.0.0.1:8080,这样就只能本机的程序直接访问该容器,例如nginx。

启动完毕后,通过IP:8080打开服务端,注册自己的账号,然后关闭删除容器并重新启动。

 docker rm -f Bitwarden

关闭删除后,重新启动:

docker run -d --name Bitwarden \
 -e SIGNUPS_ALLOWED=false \
-e TZ=Asia/Shanghai \
-v /home/bitwarden/:/data/ \
-p 8080:80 \
--restart=always \
vaultwarden/server:latest

SIGNUPS_ALLOWED变量这次关闭,因为有自己账号了。

自此就可以正式运作,添加浏览器插件(搜索Bitwarden)的时候,直接输入域名+端口即可,如果已经用nginx前置反代的,那么直接域名即可(也就是默认的80、443端口)。

往后注意备份/home/bitwarden/文件夹即可。

软件/插件安装

浏览器插件安装
手机软件安装:iOS安卓(谷歌应用商店)

安装rclone

备份到rclone的好处就是,日常打开电脑,就可以直接看到备份数据,当然也可以备份到Google Drive上。

具体安装rclone可按教程 https://www.misterma.com/archives/900/

其中配置rclone,需要用到token

授权码需要在本地电脑上获取,访问 Rclone downloads 根据电脑系统版本下载对应的 Rclone。

下载完成后解压,进入存放 Rclone 的目录下cmd,然后执行

rclone authorize "onedrive"

获取到如下格式的token

{"access_token":""}

完成配置之后,挂载rclone

rclone mount configName:OneDriveLocation dir --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000

其中的 configName 就是配置名称,OneDriveLocation 就是要挂载的 OneDrive 目录,dir 就是要挂载到的本地目录。

例如我要把一个名为 OneDrive 的配置挂载到本地的 /OneDrive 目录,我可以这样写:

rclone mount OneDrive:/ /OneDrive --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000

配置rclone.service

cat > /etc/systemd/system/rclone.service <<EOF
[Unit]
Description=Rclone Service
After=network-online.target

[Service]
Type=simple
User=root
Group=root
#CPUQuota=85%
#CPUWeight=10
#MemoryHigh=800M
#MemoryMax=1024M

ExecStartPre=-/usr/bin/fusermount -qzu /OneDrive
ExecStart=/usr/bin/rclone -q mount superyuluo:/ /OneDrive \
 --log-file=/home/rclone/rclone.log \
 --cache-dir /home/rclone/cache/OneDrive \
 --dir-cache-time 5m \
 --umask 000 \
 --default-permissions \
 --allow-other \
 --allow-non-empty \
 --buffer-size 64M \
 --transfers 5 \
 --vfs-cache-mode full \
 --vfs-cache-max-age 5m \
 --vfs-read-ahead 512M \
 --vfs-read-chunk-size 4M \
 --vfs-read-chunk-size-limit 512M

ExecStop=/usr/bin/fusermount -qzu /OneDrive
ExecStopPost=/usr/bin/rm -R /home/rclone/cache/OneDrive
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

启动挂载服务

systemctl daemon-reload
sudo systemctl start rclone.service
sudo systemctl enable rclone.service
sudo systemctl status rclone.service

挂载完成之后,可用命令查看是否完成了正常挂载
df -h
其中,出现以下内容即可

Filesystem      Size  Used Avail Use% Mounted on
superyuluo:     5.0G     0  5.0G   0% /OneDrive

配置运行脚本bitwarden_backup.sh

#!/bin/bash
# Set the backup path and the filename with date
BACKUP_PATH="/OneDrive/"
DATE=$(date +%Y-%m-%d)
FILENAME="bitwarden_backup_$DATE.tar.gz"

# Copy the database file to the backup path
cp /home/bitwarden/db.sqlite3 $BACKUP_PATH

# Create a tarball (compressed) of the database file
tar -zcvf ${BACKUP_PATH}${FILENAME} ${BACKUP_PATH}db.sqlite3

# Use rclone to copy the file to OneDrive
rclone copy ${BACKUP_PATH}${FILENAME} superyuluo:/bitwarden

# Remove backups older than 3 days, -maxdepth 1 ensures we're only looking in the current directory
find ${BACKUP_PATH} -maxdepth 1 -name 'bitwarden_backup_*.tar.gz' -mtime +2 -exec rm {} \;

定时自动运行

crontab -e
0 1 * * * bash /root/bitwarden_backup.sh

遇到的问题:
1:Fatal error: failed to mount FUSE fs: fusermount: exec: “fusermount3”: executable file not found in $PATH
这个错误表明系统无法找到fusermount3可执行文件,这是rclone mount命令需要的。需要先完成安装fuse3

sudo apt update
sudo apt install fuse3

安装完成后,将fusermount3添加到$PATH

sudo ln -s /bin/fusermount /bin/fusermount3
42 个赞

我也用的自建的Bitwarden,挺好的

1 个赞

哇哈哈哈哈,一直在用,感觉蛮爽的~

以前我也用 后来想通了 再折腾不如github建立一个私有项目安心

2 个赞

还有好东西?分享一下呗,佬!

自建比官服多个TOTP

细说

开个帖子细说

我是用 restic 和 rclone 定时增量加密备份所有 docker 应用的数据目录和 docker-compose.yaml 文件到 googledrive 和 onedrive

2 个赞

先点贊再研究

你的需求可以用 1Panel 直接满足,不用造轮子的。
1p 自带 docker 管理、备份存储、自动备份之类的功能。

不用折腾,官方就有step by step教学了

细说github私有项目。想要一个简单一点的,能自动记录密码就行,bitwarden有点太占资源了,小VPS有点吃力

我建议,你在进行 tar 压缩的时候,加上加密的参数,这样就算是 sql 文件泄露,别人也无法简单的获取你的所有密码

bitwarden 里面存的密码就是加密的,用你的 master password 进行加密,数据库里面不是明文的

1 个赞

不能防量子计算机的话,现在有黑产专门收集加密后的密码,然后等量子计算机成熟就能破解了

26 个赞

佬可否细说配置自动同步的方法,最近正在研究希望参考下

有一个问题请教一下,备份出来的文件时sqlite3格式,如果需要恢复,该怎么恢复,直接在bitwarden目录里替换sqlite3文件吗

是的

1 个赞

直接备份文件解压,新建容器指定解压文件夹为配置文件就可以了

1 个赞