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


