使用bitwaredn(vaultwarden)搭建自己的密码库
本人一直在所有网站使用同一个密码,直到之前有很多网站的数据库泄露了,这些网站居然在明文储存密码,真是无语。我的密码就这样活生生在某些软件(telegram)上面被明文放了出来,这使我不得不考虑密码安全。之前考虑使用edge或者chrome直接储存密码,但这样也不是很安全(==Chrome浏览器保存的密码很不安全,第三方软件可以很轻松的获取==)。所以使用密码管理器来管理自己的密码。
密码管理器有很多,比如1password和lastpass这类的,但我发现了bitwarden这个神器,它支持自主部署服务端,而且是开源的。下面就教大家如何搭建一个属于自己的bitwarden密码管理器。
这里使用非官方的bitwarden实现vaultwarden,使用rust编写,节省服务器资源。
首先你需要一台服务器,或者自家的群晖和树莓派等等都可以。选择服务器并且使用vaultwarden实现的话1h1g的服务器足矣。首先连接到服务器:
-
安装docker和docker-compose,命令如下:
#docker curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun #docker-compose sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose # 设置权限,应用可执行权限 sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose # 添加软连接 docker-compose --version # 查看安装信息
PS:也可以不使用docker,但很麻烦,感兴趣的可以去vaultwarden官方github查看他们的使用文档。
-
安装nginx
也可以使用apache,caddy等反向代理软件。
这里使用lnmp.org提供的一键lnmp安装包来安装nginx,这是他们官方网站的截图,具体使用方法可以去查看他们的官方文档。
- 输入以下命令进行安装:
如果你打算使用mysql作为数据库,那么这里可以一并安装。
wget http://soft.vpser.net/lnmp/lnmp1.9.tar.gz -cO lnmp1.9.tar.gz && tar zxf lnmp1.9.tar.gz && cd lnmp1.9 && ./install.sh lnmp ./lnmp.org nginx #安装nginx ./lnmp.org mysql #如果要安装mysql
-
准备环境
- 申请ssl证书
如果你使用内网环境,此步可以使用自签证书,否则请使用真实的证书。如果没有https,vaultwarden将拒绝启动。
具体申请过程可以去看我的另一篇文章:使用freessl.cn申请免费证书
-
配置vaultwarden docker容器
- 创建vaultwarden配置文件
先建一个vaultwarden的目录,创建docker-compose.yml和config.env。
- docker-compose.yml的内容(按需更改文件内容):
version: '3' services: bitwarden: image: vaultwarden/server:latest #使用最新镜像 container_name: 'bitwarden' restart: always volumes: - /apps/bitwarden/data:/data #容器内的 /data 目录挂载到宿主机的目录; env_file: - /apps/bitwarden/config.env ports: - "8880:80" - "3012:3012"
- config.env的内容(==一定要先开放注册==):
SIGNUPS_ALLOWED=true #是否开放用户注册,先开启之后再关闭,不然你没法创建自己账户 DOMAIN=https://bitwarden.xxxx.com/ #Bitwarden 服务使用的域名 #DATABASE_URL='mysql://vaultwarden:g0SsWSEuF1lS5Rpf@172.17.0.1:3306/vaultwarden' #数据库在容器内的路径,如果使用sqlite此行需要注释,使用mysql请将内容换成你的。 ROCKET_WORKERS=10 #设置服务器线程 WEB_VAULT_ENABLED=true #是否开启 Web 客户端 LOG_FILE=/data/bitwarden.log WEBSOCKET_ENABLED=true ENABLE_DB_WAL='true' TZ="Asia/Shanghai" SERVER_ADMIN_EMAIL=你的邮箱 ADMIN_TOKEN=你的后台管理密码
-
(可选)如果你的数据库为mysql,请先这样创建数据库
- 为 Vaultwarden 创建一个新的(空)数据库(确保字符集和排序规则正确!):
CREATE DATABASE vaultwarden CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- 创建数据库
-
创建一个新的数据库用户并授予数据库权限(对于 MariaDB,版本低于 v8 的 MySQL):
CREATE USER 'vaultwarden'@'localhost' IDENTIFIED BY 'yourpassword'; GRANT ALL ON
vaultwarden
.* TO 'vaultwarden'@'localhost'; FLUSH PRIVILEGES; -
如果使用 MySQL v8.x,则需要这样创建用户:
-- 在 MySQLv8 安装上这样使用 CREATE USER 'vaultwarden'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourpassword'; GRANT ALL ON
vaultwarden
.* TO 'vaultwarden'@'localhost'; FLUSH PRIVILEGES;
- 赋予权限:
GRANT ALTER, CREATE, DELETE, DROP, INDEX, INSERT, SELECT, UPDATE ON
vaultwarden
.* TO 'vaultwarden'@'localhost'; FLUSH PRIVILEGES;
- 创建vaultwarden配置文件
-
启动容器
systemctl start docker docker-compose up -d
-
配置nginx反向代理
这里仅展示server块内容,将下面内容放如http块即可。
server { listen 443 ssl http2; #listen [::]:443 ssl http2; #有ipv6可以取消注释 server_name 你的域名; ssl_certificate 你证书路径; ssl_certificate_key 你的私钥路径; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; #ssl_early_data on; ssl_prefer_server_ciphers off; ssl_session_tickets off; ssl_session_cache shared:SSL:10m; ssl_session_timeout 1d; ssl_stapling on; ssl_stapling_verify on; resolver 1.1.1.1 1.0.0.1 8.8.8.8 8.8.4.4 208.67.222.222 208.67.220.220 valid=60s; resolver_timeout 2s; access_log /apps/nginx/logs/bitwarden/access.log main; #日志路径 error_log /apps/nginx/logs/bitwarden/error.log warn; #include /apps/nginx/conf/cloudflare.conf; #keepalive_timeout 0; proxy_connect_timeout 15m; proxy_send_timeout 15m; proxy_read_timeout 15m; send_timeout 15m; client_max_body_size 128M; location / { #include /apps/nginx/conf/cloudflare.conf; proxy_pass http://127.0.0.1:8880; 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://127.0.0.1:3012; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; 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/negotiate { proxy_pass http://127.0.0.1:8880; 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 /admin { proxy_pass http://127.0.0.1:8880; # auth_basic "Administrator’s Area"; # auth_basic_user_file /etc/apache2/.htpasswd; 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; } add_header Referrer-Policy "no-referrer" always; add_header X-Content-Type-Options "nosniff" always; add_header X-Download-Options "noopen" always; add_header X-Frame-Options "SAMEORIGIN" always; add_header X-Permitted-Cross-Domain-Policies "none" always; add_header X-Robots-Tag "none" always; add_header X-XSS-Protection "1; mode=block" always; add_header Strict-Transport-Security "max-age=63072000;includeSubdomains; preload" always; }
配置完毕后重启重启nginx:
systemctl restart nginx
如果一切配置正确,打开你的域名现实如下内容,那么恭喜,运行是正常的:
- 申请ssl证书
-
配置vaultwarden
-
首先进行注册,点击创建账户
按照提示完成账户即可如果无法注册,请将之前的config.env中的SIGNUPS_ALLOWED=false 改为true,然后重建容器即可。
命令为docker-compose down && docker-compose up -d。
-
登录账户
加入如图界面说明你的bitwarden已经可以使用了。然后如果你一个人使用,请将允许注册关闭:# config.env SIGNUPS_ALLOWED=false # shell docker-compose down && docker-compose up -d
登录后台管理界面:
https://你的域名/admin 输入你设置的管理员密码:
在这里你可以更改各种设置,以及备份数据库。
-
到此,你的bitwarden已经可以使用了,enjoy:satisfied:!
文末附上官方文档的翻译:关于 - Vaultwarden Wiki 中文版 (ppgg.in)
版权声明:
作者:anoixa
链接:https://blog.imtop1.moe/archives/249/
来源:anoixa的博客
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论