群晖 Synology 部署 Bitwarden 密码管理器

Bit­war­den 是一款开源的密码管理器,其功能主要有账号密码管理、自动生成密码、导出所有密码、密码自动填充、方便切换多个账号等。而 Vault­war­den 是一个使用 Rust 编写的非官方 Bit­war­den 服务器实现,它与官方 Bit­war­den 客户端兼容,且支持更多的系统平台和架构。本文介绍如何在群晖 Syn­ol­ogy DSM 上部署安装 Bit­war­den 密码管理器,将重要的个人密码托管在自己的服务器上。

群晖 Synology 部署 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

首次使用 Bit­war­den 需要创建账号,浏览器访问 https://域名.com:端口/admin,输入预先配置的 ADMIN_TOKEN 值,进入管理页面,优先配置 SMTP 邮箱发信后,重新回到首页通过创建账号进行登录。

给TA打赏
共{{data.count}}人
人已打赏
技术教程

LFTP 命令行工具常见用法大全详解

2023-8-4 10:42:35

技术教程

在群晖 Synology 上搭建 Bark 消息推送服务器

2023-8-15 12:32:31

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索