本文来源于 - > 我的博客
Bitwarden是一个Vault软件,将你所有的信息都存储在一个加密的保险库里。它不仅可以可以管理密码,可以添加笔记和文件。这些都是加密存储的,通过一个主密码来解锁保险库。它有免费的版本,可以在它官网上注册,并且有苹果和安卓的客户端。
Bitwarden也是可以私有部署,但是它的组件非常多,部署极为复杂,并且非常占用资源。因此,Vaultwarden出现了。它是一个Bitwarden的替代方案,体验和Bitwarden几乎是一样的,兼容Bitwarden的客户端。它的docker镜像只有一个,部署难度很低,且资源占用很低,2核2G的轻量服务器可以流畅运行。Github项目地址。
最简单的方式就是使用Docker部署。本身作为一个要求安全性的软件,官方推荐部署在一个代理后面,代理负责处理HTTPS的流量。
/data
,这里面有Vaultwarden的数据库文件,默认是SQLite。SIGNUPS_ALLOWED=true
,也就是注册第一个admin账号。在需要的账号的注册都注册完之后,改成false
关闭新用户注册。ADMIN_TOKEN
来管理Admin界面来设置整体应用。设置完之后,将这一行注释掉。network
是让Vaultwarden只可以和Nginx进行交互。我是有一个单独的Nginx来代理很多的应用。每次用新应用就直接attach新的容器到Nginx的网络里。但是可以将Nginx和Vaultwarden放到一个Docker Compose文件里。这样也不需要额外的Docker网络。services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
expose:
- 80
volumes:
- ./vw-data:/data
environment:
- SIGNUPS_ALLOWED=true
- WEBSOCKET_ENABLED=true
- ADMIN_TOKEN='sA3uL1kwrhXEZOu7BIAopdvLL3P99g4qxcN62IKI62HgpN/BQ+ilVjJc6G+oRpaZ'
- DOMAIN=https://password.example.com
networks:
- nginx-reverse-proxy
networks:
nginx-reverse-proxy:
external: true
services:
nginx:
image: nginx:latest
container_name: nginx-reverse-proxy
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d:ro
- ./log:/var/log/nginx
- /etc/letsencrypt/live/zenseek.site/fullchain.pem:/etc/nginx/certs/fullchain.pem:ro
- /etc/letsencrypt/live/zenseek.site/privkey.pem:/etc/nginx/certs/privkey.pem:ro
- /etc/localtime:/etc/localtime:ro
networks:
- nginx-reverse-proxy
- internet
restart: always
networks:
nginx-reverse-proxy:
external: true
internet:
external: true
http://vaultwarden:80
,因为容器之间通信,只需要HTTP就可以了。而这个容器名可以在docker network里看到它的名字和IP。在YAML文件里设置了container_name
,那就不会错了。server {
listen 443 ssl;
server_name password.example.com;
# Add this line to increase the limit
client_max_body_size 100M;
ssl_certificate /etc/nginx/certs/fullchain.pem;
ssl_certificate_key /etc/nginx/certs/privkey.pem;
# SSL/TLS Security Settings
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers HIGH:!aNULL:!MD5;
# Enable HSTS
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
location / {
proxy_pass http://vaultwarden:80;
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://vaultwarden:3012;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /notifications/hub/negotiate {
proxy_pass http://vaultwarden:80;
}
}
在Nginx的容器内查看新的配置文件是否正确并重启Nginx。
root@b2f567d4689b:/# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
root@b2f567d4689b:/# nginx -s reload
访问地址就是https://password.example.com
. Nginx会终结HTTPS,将HTTP流量转到Vaultwarden容器。在允许注册的情况,页面会让你输入邮箱地址和用户名,然后下一步到设置主密码。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。