Bitwarden 是一款开源的密码管理器,其功能主要有账号密码管理、自动生成密码、导出所有密码、密码自动填充、方便切换多个账号等。而 Vaultwarden 是一个使用 Rust 编写的非官方 Bitwarden 服务器实现,它与官方 Bitwarden 客户端兼容,且支持更多的系统平台和架构。本文介绍如何在群晖 Synology DSM 上部署安装 Bitwarden 密码管理器,将重要的个人密码托管在自己的服务器上。
启用 SSH 服务
进入 DSM 控制面板 > 终端机和 SNMP > 终端机,勾选启用 SSH 服务。指定 SSH 连接的端口号并保存设置。为了确保系统安全性,建议将默认端口 22
替换为其他端口号。
Docker 部署
# 创建目录,用于存放 vaultwarden 数据
mkdir -p /volume1/docker/vw-data
# 下载 docker 最新镜像
docker pull vaultwarden/server:latest
# 创建并运行容器(完整命令)
docker run -d --name bitwarden \
-v /volume1/docker/vw-data:/data/ \
-p 8080:80 \
-p 3012:3012 \
-e SIGNUPS_ALLOWED=false \
-e WEBSOCKET_ENABLED=true \
-e INVITATIONS_ALLOWED=false \
-e ADMIN_TOKEN=随机字符串 \
-e DOMAIN=https://yourdomain.com:7878 \
--restart=always \
vaultwarden/server:latest
参数选项:
- 变量
-e SIGNUPS_ALLOWED=false
,禁止注册。 - 如需开放注册、配置SMTP邮箱发信等,需要在
/admin
管理页面内进行设置,而启用 admin 管理页面,需要配置变量-e ADMIN_TOKEN=随机字符串
(随机字符串可通过运行openssl rand -base64 16
命令生成一个)。访问/admin
进入管理页面需要输入已定义的字符串才能进入。 - 配置变量
-e WEBSOCKET_ENABLED=true
以启用 WebSocket 连接,保持服务端与客户端实时同步。 - 配置变量
-e DOMAIN=你的域名:端口
,懂得都懂443
和80
端口被禁用。
更多参数配置,请访问 –> 官方 WIKI
反向代理/启用HTTPS
创建 Nginx 配置文件
# 进入目录
cd /etc/nginx/sites-enabled
# 编辑文件
vim bitwarden.server.conf
示例配置:
server {
listen 7878 default; #禁止通过IP访问
server_name _;
return 403;
}
server {
# 可替换为其它可用端口,前提是已做好端口映射和防火墙开放行
listen 7878 ssl http2;
# 替换为自己的域名
server_name yourdomain.com;
ssl_certificate /usr/syno/etc/certificate/system/default/fullchain.pem;
ssl_certificate_key /usr/syno/etc/certificate/system/default/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:SSLCipherSuiteECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256;';
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"; #开启HSTS
# 非443端口强制跳转https,注意不可有其他跳转
error_page 497 301 =307 https://$host:$server_port$request_uri;
# 反向代理
location / {
proxy_http_version 1.1;
proxy_set_header "Connection" "";
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://127.0.0.1:8080;
}
location /notifications/hub {
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 Forwarded $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:3012;
}
location /notifications/hub/negotiate {
proxy_http_version 1.1;
proxy_set_header "Connection" "";
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://127.0.0.1:8080;
}
}
重载 Nginx 服务
# DSM 6.x 系统
synoservice --reload nginx
# DSM 7.x 系统
systemctl reload nginx
首次使用 Bitwarden 需要创建账号,浏览器访问 https://域名.com:端口/admin
,输入预先配置的 ADMIN_TOKEN
值,进入管理页面,优先配置 SMTP 邮箱发信后,重新回到首页通过创建账号进行登录。