设为首页收藏本站

简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย Français

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 457|回复: 50

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

[复制链接]

59

主题

464

回帖

1145

积分

金牌会员

积分
1145
发表于 2019-11-26 12:51:27 | 显示全部楼层 |阅读模式
本帖最后由 mmmmmiku 于 2019-11-27 08:08 编辑

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

~理论上能跑docker就行,我搭建在virmach 1c384mb的小鸡上
~搭建环境为Centos7,只要能装docker就行。

~bitwarden的app和浏览器插件可以在对应的应用商店里找到,自动填充非常方便。安装后可以在设置里填自己的域名。


[ol]
  • yum -y install docker
  • systemctl enable docker
  • systemctl start docker
  • curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
  • chmod +x /usr/local/bin/docker-compose
  • mkdir /usr/local/bitwarden
  • vi /usr/local/bitwarden/config.env
  • vi /usr/local/bitwarden/docker-compose.yml
  • cd /usr/local/bitwarden
  • docker-compose up -d[/ol]复制代码
    config.env
    [ol]
  • SIGNUPS_ALLOWED=true
  • DOMAIN=https://xxx.com
  • DATABASE_URL=/data/bitwarden.db
  • ROCKET_WORKERS=10
  • WEB_VAULT_ENABLED=true
  • ADMIN_TOKEN=wwwwwwwwwwwwwwww
  • WEBSOCKET_ENABLED=true[/ol]复制代码

    docker-compose.yml

    [ol]
  • version: '3'
  • services:
  •   bitwarden:
  •     image: bitwardenrs/server:latest
  •     container_name: bitwarden
  •     restart: always
  •     volumes:
  •       - ./data:/data
  •     env_file:
  •       - config.env
  •     ports:
  •       - "9999:80"
  •       - "9998:3012"[/ol]复制代码
    DOMAIN填自己的域名,需要HTTPS。
    ADMIN_TOKEN为管理面板密码,推荐使用“openssl rand -base64 48”生成。
    SIGNUPS_ALLOWED=true,此项控制注册,只想自己用的话注册后可以改为false。

    然后通过nginx反代开启SSL
    由于vir的网络非常垃圾,建议去cf里生成orgin证书,套上cf食用。这样可以不用考虑源站证书续期
    [ol]
  • server
  •     {         
  •          listen 80;
  •          server_name    pw.xx.com ;  
  •          return      301 https://$server_name$request_uri;
  • }
  • server
  •     {
  •         listen 443 ssl http2;
  •         #listen [::]:443 ssl http2;
  •         #listen [::]:80;
  •         server_name pw.xx.com ;
  •         ssl_certificate /xx.crt;
  •         ssl_certificate_key /xx.key;
  •                
  •             server_tokens        off;
  •             ssl_protocols              TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
  •             ssl_prefer_server_ciphers on;
  •             ssl_ciphers "EECDH+AES128:RSA+AES128:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
  •             ssl_session_cache shared:SSL:10m;
  •             ssl_session_timeout        1d;
  •             ssl_stapling               on;
  •             ssl_stapling_verify        on;
  •             resolver 8.8.8.8 8.8.4.4;
  •             resolver_timeout           10s;
  •             add_header Strict-Transport-Security "max-age=63072000;includeSubdomains; preload";
  •             add_header X-Frame-Options DENY;
  •             add_header X-Content-Type-Options nosniff;
  •             add_header X-XSS-Protection "1; mode=block";
  •             client_max_body_size 128M;
  •                
  •             location / {
  •            proxy_pass http://localhost:9999;
  •            proxy_set_header Host $host;
  •            proxy_set_header X-Real-IP $remote_addr;
  •            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  •            proxy_set_header X-Forwarded-Proto $scheme;
  •         }
  •                 location /notifications/hub {
  •            proxy_pass http://localhost:9998;
  •            proxy_set_header Upgrade $http_upgrade;
  •            proxy_set_header Connection "upgrade";
  •         }
  •                 location /notifications/hub/negotiate {
  •            proxy_pass http://localhost:9999;
  •         }
  •                
  •                 # Optionally add extra authentication besides the AUTH_TOKEN
  •         # If you don't want this, leave this part out
  •         location /admin {
  •         # See: https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-http-basic-authentication/
  •            proxy_set_header Host $host;
  •            proxy_set_header X-Real-IP $remote_addr;
  •            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  •            proxy_set_header X-Forwarded-Proto $scheme;
  •            proxy_pass http://localhost:9999;
  •         }
  •         access_log  /home/wwwlogs/pw.xx.com.log;
  •     }
  • [/ol]复制代码
    然后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
    [ol]
  • wget https://astuteinternet.dl.sourceforge.net/project/p7zip/p7zip/16.02/p7zip_16.02_src_all.tar.bz2
  • tar -jxvf p7zip_16.02_src_all.tar.bz2
  • cd p7zip_16.02
  • make && make install
  • mkdir /usr/local/backup
  • vi /usr/local/backup/backup.sh
  • wget https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh
  • chmod +x backup.sh dropbox_uploader.sh
  • /usr/local/backup/dropbox_uploader.sh
  • /usr/local/backup/backup.sh
  • crotab -e[/ol]复制代码

    backup.sh,这个是用军哥lnmp的备份脚本改的。
    [ol]
  • #!/bin/bash
  • #Funciont: Backup website and mysql database
  • #Author: licess
  • #Website: https://lnmp.org
  • Bit_name="bitwarden"
  • dropboxshell_dir="/usr/local/backup/dropbox_uploader.sh"
  • drop_dir=/${Bit_name}/$(date +"%Y%m%d%H")
  • password="wwwwwwww"
  • #IMPORTANT!!!Please Setting the following Values!
  • Zip_Dir="/usr/local/bin/7za"
  • Backup_Home="/usr/local/backup/"
  • ######~Set Directory you want to backup~######
  • Backup_Dir=("/usr/local/bitwarden")
  • #Values Setting END!
  • OldBackup=${Bit_name}$(date -d -7day +"%Y%m%d%H").7z
  • Old_DROPBOX_DIR=/${Bit_name}/$(date -d -30day +"%Y%m%d%H")
  • Backup_Dir()
  • {
  •     Backup_Path=$1
  •     Dir_Name=`echo ${Backup_Path##*/}`
  •     Pre_Dir=`echo ${Backup_Path}|sed 's/'${Dir_Name}'//g'`
  •     tar zcf ${Backup_Home}bit-${Dir_Name}-$(date +"%Y%m%d%H").tar.gz -C ${Pre_Dir} ${Dir_Name}
  • }
  • if [ ! -f ${MySQL_Dump} ]; then  
  •     echo "mysqldump command not found.please check your setting."
  •     exit 1
  • fi
  • if [ ! -d ${Backup_Home} ]; then  
  •     mkdir -p ${Backup_Home}
  • fi
  • echo "Backup bitwarden files..."
  • for dd in ${Backup_Dir[@]};do
  •     Backup_Dir ${dd}
  • done
  • echo "compass with 7z..."
  • ${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
  • rm -rf ${Backup_Home}bit-${Dir_Name}-$(date +"%Y%m%d%H").tar.gz
  • echo "upload to dropbox..."
  • ${dropboxshell_dir} upload $Backup_Home/${Bit_name}$(date +"%Y%m%d%H").7z $drop_dir/${Bit_name}$(date +"%Y%m%d%H").7z
  • ${dropboxshell_dir} delete $Old_DROPBOX_DIR
  • echo "Delete old backup files..."
  • rm -f ${Backup_Home}${OldBackup}
  • [/ol]复制代码

    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


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

    ↓↓↓↓↓↓↓↓↓↓↓


  • 本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×
    回复

    使用道具 举报

    218

    主题

    695

    回帖

    2134

    积分

    金牌会员

    积分
    2134
    发表于 2019-11-26 13:02:19 | 显示全部楼层
    自建不安全 我入你小鸡拿到所有密码 包括所在的网站地址
    入侵你的dropbox获取备份拿到密码
    密码丢失 备份丢失
    dropbox账号被封
    所以。。。。
    回复

    使用道具 举报

    59

    主题

    464

    回帖

    1145

    积分

    金牌会员

    积分
    1145
     楼主| 发表于 2019-11-27 10:32:00 | 显示全部楼层

    小旭 发表于 2019-11-26 13:02

    自建不安全 我入你小鸡拿到所有密码 包括所在的网站地址
    入侵你的dropbox获取备份拿到密码
    密码丢失 备份丢 ...

    首先,你拿到bitwarden的数据库文件也拿不到密码,然后上传dropbox的压缩包通过7Z加了密,你能破解16位带字符的密码那你牛皮。担心dropbox被封可以ftp发回你家里或者使用其他安全的备份途径。
    回复

    使用道具 举报

    59

    主题

    464

    回帖

    1145

    积分

    金牌会员

    积分
    1145
     楼主| 发表于 2019-11-26 20:42:00 | 显示全部楼层
    "

    2g存密码都不够,想想有点恐怖
    回复

    使用道具 举报

    1

    主题

    131

    回帖

    293

    积分

    中级会员

    积分
    293
    发表于 2019-11-26 13:05:19 | 显示全部楼层
    Tql
    回复

    使用道具 举报

    80

    主题

    338

    回帖

    960

    积分

    高级会员

    积分
    960
    发表于 2019-11-26 13:02:00 | 显示全部楼层
    马克
    回复

    使用道具 举报

    19

    主题

    511

    回帖

    1153

    积分

    金牌会员

    积分
    1153
    发表于 2019-11-26 20:24:51 | 显示全部楼层
    支持,我之前基于宝塔面板搞了一次,但是总感觉哪有问题。
    回复

    使用道具 举报

    11

    主题

    36

    回帖

    127

    积分

    注册会员

    积分
    127
    发表于 2019-11-26 13:48:00 | 显示全部楼层
    这个有什么方便的地方 跟lastpass 有啥不一样?
    回复

    使用道具 举报

    12

    主题

    217

    回帖

    520

    积分

    高级会员

    积分
    520
    发表于 2019-11-26 12:55:24 | 显示全部楼层
    然后呢?如何食用,自己再做个chrome插件,再搞个app?
    回复

    使用道具 举报

    59

    主题

    464

    回帖

    1145

    积分

    金牌会员

    积分
    1145
     楼主| 发表于 2019-11-26 12:55:49 | 显示全部楼层

    lixiaojun 发表于 2019-11-26 12:56

    然后呢?如何食用,自己再做个chrome插件,再搞个app?

    官方提供了全部平台的插件和app,你装好后在app或者插件里把域名设置为自己的就可以了
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|Discuz! X

    GMT+8, 2025-12-20 17:30 , Processed in 0.016904 second(s), 5 queries , Gzip On, Redis On.

    Powered by Discuz! X3.5

    © 2001-2025 Discuz! Team.

    快速回复 返回顶部 返回列表