利用闲置vps搭建bitwarden私人密码管理,榨干小鸡价值

搬瓦工机场JMS

~利用virmach或者其他家的垃圾小鸡配上dropbox备份数据,好处在于成本极其低,一年甚至不到5刀!比没有80端口的NAS强多了
~使用bitwarden_rs搭建并每天备份两次到dropbox保证数据安全。

~理论上能跑docker就行,我搭建在virmach 1c384mb的小鸡上
~搭建环境为Centos7,只要能装docker就行。
~bitwarden的app和浏览器插件可以在对应的应用商店里找到,自动填充非常方便。安装后可以在设置里填自己的域名。

  1. yum -y install docker
  2. systemctl enable docker
  3. systemctl start docker
  4. curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
  5. mkdir /usr/local/bitwarden
  6. vi /usr/local/bitwarden/config.env
  7. vi /usr/local/bitwarden/docker-compose.yml
  8. cd /usr/local/bitwarden
  9. docker-compose up -d

复制代码

config.env

  1. SIGNUPS_ALLOWED=true
  2. DOMAIN=https://xxx.com
  3. DATABASE_URL=/data/bitwarden.db
  4. ROCKET_WORKERS=10
  5. WEB_VAULT_ENABLED=true
  6. ADMIN_TOKEN=wwwwwwwwwwwwwwww
  7. WEBSOCKET_ENABLED=true

复制代码

docker-compose.yml

  1. version: ‘3’
  2. services:
  3.   bitwarden:
  4.     image: bitwardenrs/server:latest
  5.     container_name: bitwarden
  6.     restart: always
  7.     volumes:
  8.       – ./data:/data
  9.     env_file:
  10.       – config.env
  11.     ports:
  12.       – "9999:80"
  13.       – "9998:3012"

复制代码

DOMAIN填自己的域名,需要HTTPS。
ADMIN_TOKEN为管理面板密码,推荐使用“openssl rand -base64 48”生成。
SIGNUPS_ALLOWED=true,此项控制注册,只想自己用的话注册后可以改为false。

然后通过nginx反代开启SSL
由于vir的网络非常垃圾,建议去cf里生成orgin证书,套上cf食用。这样可以不用考虑源站证书续期

  1. server
  2.     {         
  3.          listen 80;
  4.          server_name    pw.xx.com ;  
  5.          return      301 https://$server_name$request_uri;
  6. }
  7. server
  8.     {
  9.         listen 443 ssl http2;
  10.         #listen [::]:443 ssl http2;
  11.         #listen [::]:80;
  12.         server_name pw.xx.com ;
  13.         ssl_certificate /xx.crt;
  14.         ssl_certificate_key /xx.key;
  15.                
  16.             server_tokens        off;
  17.             ssl_protocols              TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
  18.             ssl_prefer_server_ciphers on;
  19.             ssl_ciphers "EECDH+AES128:RSA+AES128:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
  20.             ssl_session_cache shared:SSL:10m;
  21.             ssl_session_timeout        1d;
  22.             ssl_stapling               on;
  23.             ssl_stapling_verify        on;
  24.             resolver 8.8.8.8 8.8.4.4;
  25.             resolver_timeout           10s;
  26.             add_header Strict-Transport-Security "max-age=63072000;includeSubdomains; preload";
  27.             add_header X-Frame-Options DENY;
  28.             add_header X-Content-Type-Options nosniff;
  29.             add_header X-XSS-Protection "1; mode=block";
  30.             client_max_body_size 128M;
  31.                
  32.             location / {
  33.            proxy_pass http://localhost:9999;
  34.            proxy_set_header Host $host;
  35.            proxy_set_header X-Real-IP $remote_addr;
  36.            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  37.            proxy_set_header X-Forwarded-Proto $scheme;
  38.         }
  39.                 location /notifications/hub {
  40.            proxy_pass http://localhost:9998;
  41.            proxy_set_header Upgrade $http_upgrade;
  42.            proxy_set_header Connection "upgrade";
  43.         }
  44.                 location /notifications/hub/negotiate {
  45.            proxy_pass http://localhost:9999;
  46.         }
  47.                
  48.                 # Optionally add extra authentication besides the AUTH_TOKEN
  49.         # If you don’t want this, leave this part out
  50.         location /admin {
  51.         # See: https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-http-basic-authentication/
  52.            proxy_set_header Host $host;
  53.            proxy_set_header X-Real-IP $remote_addr;
  54.            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  55.            proxy_set_header X-Forwarded-Proto $scheme;
  56.            proxy_pass http://localhost:9999;
  57.         }
  58.         access_log  /home/wwwlogs/pw.xx.com.log;
  59.     }

复制代码

然后vi /etc/rc.d/rc.local在最后加上/usr/local/bin/docker-compose -f /usr/local/bitwarden/docker-compose.yml up -d
这样开机就会自动启动bitwarden
访问https://你的域名/admin可以进去管理面板
到这里bitwarden就搭建完成可以使用了,不过个人还是建议配置数据备份。

先来个骚操作,安装7Z,为的是把数据加密打包然后再传到dropbox

  1. wget https://astuteinternet.dl.sourceforge.net/project/p7zip/p7zip/16.02/p7zip_16.02_src_all.tar.bz2
  2. tar -jxvf p7zip_16.02_src_all.tar.bz2
  3. cd p7zip_16.02
  4. make && make install
  5. mkdir /usr/local/backup
  6. vi /usr/local/backup/backup.sh
  7. wget https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh
  8. chmod +x backup.sh dropbox_uploader.sh
  9. /usr/local/backup/dropbox_uploader.sh
  10. /usr/local/backup/backup.sh
  11. crotab -e

复制代码

backup.sh,这个是用军哥lnmp的备份脚本改的。

  1. #!/bin/bash
  2. #Funciont: Backup website and mysql database
  3. #Author: licess
  4. #Website: https://lnmp.org
  5. Bit_name="bitwarden"
  6. dropboxshell_dir="/usr/local/backup/dropbox_uploader.sh"
  7. drop_dir=/${Bit_name}/$(date +"%Y%m%d%H")
  8. password="wwwwwwww"
  9. #IMPORTANT!!!Please Setting the following Values!
  10. Zip_Dir="/usr/local/bin/7za"
  11. Backup_Home="/usr/local/backup/"
  12. ######~Set Directory you want to backup~######
  13. Backup_Dir=("/usr/local/bitwarden")
  14. #Values Setting END!
  15. OldBackup=${Bit_name}$(date -d -7day +"%Y%m%d%H").7z
  16. Old_DROPBOX_DIR=/${Bit_name}/$(date -d -30day +"%Y%m%d%H")
  17. Backup_Dir()
  18. {
  19.     Backup_Path=$1
  20.     Dir_Name=`echo ${Backup_Path##*/}`
  21.     Pre_Dir=`echo ${Backup_Path}|sed ‘s/’${Dir_Name}’//g’`
  22.     tar zcf ${Backup_Home}bit-${Dir_Name}-$(date +"%Y%m%d%H").tar.gz -C ${Pre_Dir} ${Dir_Name}
  23. }
  24. if [ ! -f ${MySQL_Dump} ]; then  
  25.     echo "mysqldump command not found.please check your setting."
  26.     exit 1
  27. fi
  28. if [ ! -d ${Backup_Home} ]; then  
  29.     mkdir -p ${Backup_Home}
  30. fi
  31. echo "Backup bitwarden files…"
  32. for dd in ${Backup_Dir[@]};do
  33.     Backup_Dir ${dd}
  34. done
  35. echo "compass with 7z…"
  36. ${Zip_Dir} a -mhe -p${password} ${Backup_Home}${Bit_name}$(date +"%Y%m%d%H").7z ${Backup_Home}bit-${Dir_Name}-$(date +"%Y%m%d%H").tar.gz
  37. rm -rf ${Backup_Home}bit-${Dir_Name}-$(date +"%Y%m%d%H").tar.gz
  38. echo "upload to dropbox…"
  39. ${dropboxshell_dir} upload $Backup_Home/${Bit_name}$(date +"%Y%m%d%H").7z $drop_dir/${Bit_name}$(date +"%Y%m%d%H").7z
  40. ${dropboxshell_dir} delete $Old_DROPBOX_DIR
  41. echo "Delete old backup files…"
  42. rm -f ${Backup_Home}${OldBackup}

复制代码

password这里填你想设置的压缩包密码。

需要注册dropbox(需要f~q)验证邮箱后,进入https://www.dropbox.com/developers/apps建立一个app并生成密钥



运行dropbox_uploader.sh后将密钥填进去
运行一次backup.sh是为了测试备份是否有效

最后crontab添加定时任务
0 13 * * * /usr/local/backup/backup.sh
0 22 * * * /usr/local/backup/backup.sh
在每天13点和22点备份到dropbox

搭建好的演示站参考我的签名。
↓↓↓↓↓↓↓↓↓↓↓

江西网友:首先,你拿到bitwarden的数据库文件也拿不到密码,然后上传dropbox的压缩包通过7Z加了密,你能破解16位带字符的密码那你牛皮。担心dropbox被封可以ftp发回你家里或者使用其他安全的备份途径。
北京网友:Tql
福建网友:马克
台湾网友:支持,我之前基于宝塔面板搞了一次,但是总感觉哪有问题。
海南网友:这个有什么方便的地方 跟lastpass 有啥不一样?
青海网友:然后呢?如何食用,自己再做个chrome插件,再搞个app?
北京网友:官方提供了全部平台的插件和app,你装好后在app或者插件里把域名设置为自己的就可以了
黑龙江网友:主要要有插件自动填充。这种程度本地直接keepassx+Dropbox足够,不放心还可以在备份目录用git同步。
四川网友:自建不安全 我入你小鸡拿到所有密码 包括所在的网站地址
入侵你的dropbox获取备份拿到密码
密码丢失 备份丢失
dropbox账号被封
所以。。。。
江苏网友:自建不安全 我入你小鸡拿到所有密码 包括所在的网站地址
入侵你的dropbox获取备份拿到密码
密码丢失 备份丢失
dropbox账号被封
所以。。。。
广西网友: 好麻烦 我还是坚持keepass好了
青海网友:这个可以有
香港网友:有浏览器插件没呢?
云南网友:其实我已经写的很详细了,复制粘贴的事
贵州网友:有,chrome应用商店里
河北网友:收藏了,有空试试。
辽宁网友:之前弄过 还是蛮不错的 不过bitwarden在iOS上老是有点问题 最后还是换了1password
上海网友:我在iOS上体验很好 倒是在安卓上全是问题
江西网友:火狐呢?我主用火狐
甘肃网友:火狐呢?我主用火狐
西藏网友:有的,支持
Win
MAC
Linux
Android
IOS
Google Chrome
Mozilla Firefox
Opera
Microsoft Edge
Safari
Vivaldi
Brave
Tor Browser
甘肃网友:dropbox空间好小,伸手党坐等备份到onedrive教程
台湾网友:就是记密码的事吧,我用脑袋。。。。

未经允许不得转载:美国VPS_搬瓦工CN2 GIA VPS » 利用闲置vps搭建bitwarden私人密码管理,榨干小鸡价值

赞 (0) 打赏

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏