V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ugenehan
V2EX  ›  问与答

自建 bitwarden 的一些咨询

  •  
  •   ugenehan · 2025 年 1 月 6 日 · 3637 次点击
    这是一个创建于 381 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景: 一台群晖;一台阿里云 ECS 服务器,一个域名 需求: 在群晖中部署 bitwarden ,由于 bitwarden 需要 SSL 访问,目前使用的群晖反向代理,并通过 FRP 穿透进行访问。现在打算使用域名+证书的方式,请问有什么好的实现方案吗?该怎么配置 ECS 和群晖?

    37 条回复    2025-01-10 15:08:31 +08:00
    fengci
        1
    fengci  
       2025 年 1 月 6 日
    1. ECS FRPS. 配置 vhost_http_port 端口 不要 80 和 443
    2. ECS 配置 nginx 反代到 frps 的 vhost_http_port 端口,这里 nginx 就可以配置 ssl 了。
    3. 群晖还是 frpc
    ashong
        2
    ashong  
       2025 年 1 月 6 日 via iPhone
    局域网 + cf tunnel
    likelylee
        3
    likelylee  
       2025 年 1 月 6 日
    我是直接装 nginx proxy manager 做反代+ssl 证书自动更新,openwrt 的 ddns 自动更新,https://url:port 这样访问 vaultwarden ,额外开了 vaultwarden 的多因素认证,使用上没有任何问题。
    totoro625
        4
    totoro625  
       2025 年 1 月 6 日
    你的群晖内部已经给 bitwarden 反代配置好 SSL 了,ECS 服务器上没必要折腾太多
    ECS 服务器运行 FRPS 服务端,留一个通信端口+bitwarden 端口
    群晖上跑一个 FRPC 客户端,直接转发 tcp ,不需要其他地方额外配置
    [[proxies]]
    name = "dsm-bitwarden"
    type = "tcp"
    localIP = "192.168.1.x"
    localPort = xxx
    remotePort = xxx
    gezimonkey
        5
    gezimonkey  
       2025 年 1 月 6 日
    nginx+虚拟机 unbuntu 定时运行你域名服务商更改解析的脚本+unbuntu 中运行 certbot
    这样你家宽一更改 IP,脚本就会把你的 IP 报到域名服务商更新,ssl 证书用 certbot 解决
    okzy520
        6
    okzy520  
       2025 年 1 月 6 日 via iPhone   ❤️ 5
    不管你用什么方式访问 最好在建完需要的账号之后走 bitwarden 的 admin panel 把新建账号的权限给禁止了
    Ch3n4y
        7
    Ch3n4y  
       2025 年 1 月 6 日   ❤️ 1
    1 、在群晖的虚拟机上创建一个 Linux 系统,并使用 frp 将阿里云服务器的 80 和 443 端口映射到该 Linux 系统。
    2 、在 Linux 系统上安装 Nginx Proxy Manager ,并监听 80 和 443 端口以进行反向代理。
    3 、使用 Nginx Proxy Manager 来反向代理内网服务。
    4 、在内网中自行搭建 DNS 服务器,并修改相应的 host 配置。

    这样配置,内外网都可以直接通过域名访问内网服务,实现内外网无缝切换。
    sadara
        8
    sadara  
       2025 年 1 月 6 日
    那啥,nas 装个 lucky ?感觉上边说的好复杂
    huang86041
        9
    huang86041  
       2025 年 1 月 6 日
    就像楼上说的,本地 nas 有公网的话,申请个域名,安装 lucky ,自动更新证书和域名再加反代。 感觉这样比较简单
    dlwlrm
        10
    dlwlrm  
       2025 年 1 月 6 日
    小白问下为啥要自建啊,我都是用官方的服
    cnlaok999
        11
    cnlaok999  
       2025 年 1 月 6 日 via iPhone
    走 cf 的隧道最方便
    ugenehan
        12
    ugenehan  
    OP
       2025 年 1 月 6 日
    @totoro625 我现在群晖反代,网页可以正常访问,但是手机客户端就无法访问
    ugenehan
        13
    ugenehan  
    OP
       2025 年 1 月 6 日
    @fengci 我试一下
    zhhmax
        14
    zhhmax  
       2025 年 1 月 6 日
    直接在阿里云 ECS 上部署多简单
    securityCoding
        15
    securityCoding  
       2025 年 1 月 6 日
    cf tunnel docker 装就好,我已经稳定跑了两年没啥问题
    icaolei
        16
    icaolei  
       2025 年 1 月 6 日
    @dlwlrm #10 官方服务免费版不能用 TOTP ,自建的可以用。
    gvdlmjwje
        17
    gvdlmjwje  
       2025 年 1 月 6 日
    1.阿里 DNS 中将域名指向阿里云服务器 IP
    2.阿里云服务器装 FRPS ,S 端的配置没啥好说的
    3.群辉安装 vaultwarden ,FRPC
    4.群辉设置反向代理,为 vaultwarden 设一个反向代理用的端口
    5.C 端配置:
    [common]
    server_addr = XXX.XXX.XXX.XXX #阿里云服务器 IP
    server_port = 7000 #S 端中设置的端口
    token = XXXXXXXX #S 端中设置的 token
    log_file = /usr/local/frp/frpc.log
    log_level = info
    log_max_days = 7

    [Vaultwarden]
    type = tcp
    local_ip = 192.168.1.16 #群辉 IP
    local_port = 7789 #vaultwarden 反代端口
    remote_port = 60002 #云服务器端口

    6.最终 bitwarden 中选择自建,地址为: https://www.域名:60002
    gvdlmjwje
        18
    gvdlmjwje  
       2025 年 1 月 6 日
    上面这个是我之前的方案,22 年魔都电信封公网服务,所以停用公网 IP 用了云服务器;去年末改成公网 IP+nginx proxy manager+DDNS-GO 方案了,直接白嫖赛博菩萨 let's encrypt 的免费证书配合 npm 到期自动更新。省掉了一年 300 多的云服务器和每年手动更新群辉域名的麻烦。我看现在很多人用 luckytool 了,貌似比 npm 更简单。
    frankilla
        19
    frankilla  
       2025 年 1 月 6 日
    我用 lucky 反代,域名访问。
    9A0DIP9kgH1O4wjR
        20
    9A0DIP9kgH1O4wjR  
       2025 年 1 月 6 日
    我是在 ECS 把指定域名的 443 端口的请求,转发给 18443 端口,然后在 fprc 中,转发 fprs 的 18443 到本地的 18443 端口中,然后本地的 18443 端口是一个 nginxproxymanager 的 docker ,最终在 nginxproxymanager 的图形化页面里面配置各个域名指向本地不同的端口。
    dlwlrm
        21
    dlwlrm  
       2025 年 1 月 6 日
    @icaolei 原来如此……我都是氪金的
    KegFmn
        22
    KegFmn  
       2025 年 1 月 6 日
    公网:nginx proxy manager 负责 SSL ,frps 转发
    内网:openwrt frpc 转发
    sowhen
        23
    sowhen  
       2025 年 1 月 6 日
    cf tunnel 不二之选,方便快捷
    BAT
        24
    BAT  
       2025 年 1 月 6 日
    @dlwlrm #9 可能为了使用两步验证和上传文件功能
    icaolei
        25
    icaolei  
       2025 年 1 月 6 日
    @dlwlrm #21 是的,开订阅可以解决功能使用问题。但是管理和数据自持这俩问题还是解决不了。有服务器的情况下自建还是比较优的,做好数据备份就行了。我用了 vaultwarden-backup 项目,每个小时把数据库加密备份到本地、坚果云、阿里云、百度云、群晖上,理论上没有任何风险了。
    Od37v61n5s89gXx8
        26
    Od37v61n5s89gXx8  
       2025 年 1 月 6 日 via iPhone
    域名指向群晖,群晖 ssl 反代不就可以了吗?都用不着 ecs 啥事
    ugenehan
        27
    ugenehan  
    OP
       2025 年 1 月 7 日
    @lxh1983 手机客户端不能正常登录吧?
    Od37v61n5s89gXx8
        28
    Od37v61n5s89gXx8  
       2025 年 1 月 7 日 via iPhone
    @ugenehan 不管手机还是 web 都能正常访问啊
    ugenehan
        29
    ugenehan  
    OP
       2025 年 1 月 7 日
    @lxh1983 群晖是公网 IP ?
    ugenehan
        30
    ugenehan  
    OP
       2025 年 1 月 7 日
    @totoro625 有个奇怪的问题,frpc 日志显示代理成功了,frps 中却查不到这个端口
    totoro625
        31
    totoro625  
       2025 年 1 月 7 日
    @ugenehan #30 frps 的 log 显示有客户端连接了吗
    ugenehan
        32
    ugenehan  
    OP
       2025 年 1 月 7 日
    @totoro625 对应的代理,日志显示 start proxy success 了
    Od37v61n5s89gXx8
        33
    Od37v61n5s89gXx8  
       2025 年 1 月 7 日 via iPhone
    @ugenehan 对的,双栈公网
    ugenehan
        34
    ugenehan  
    OP
       2025 年 1 月 7 日
    @lxh1983 我没公网,只能用 ECS
    totoro625
        35
    totoro625  
       2025 年 1 月 8 日
    阿里云管理面板里面放行端口了吗?
    frps 会有一个 http 端口,在那台机器上 curl 一下看看返回什么内容
    另外,你的域名备案了吗
    ugenehan
        36
    ugenehan  
    OP
       2025 年 1 月 9 日
    @totoro625 找到原因了,设置了两个规则,一个是子域名,一个是端口。删除其中一个就好了
    ugenehan
        37
    ugenehan  
    OP
       2025 年 1 月 10 日
    @fengci 有配置可参考一下吗,一直显示 502.
    server {
    # 监听 nginx 80 端口
    listen 12345;
    # 域名配置 记得一定要加上*.frp.xxx.com + frp.xxx.com 这个,只加 frp.xxx.com 是不行的,无法支持泛域名做 sub 模式
    server_name *.frp.xxx.com frp.xxx.com;
    location / {
    proxy_pass http://127.0.0.1:11234;
    # 这个 Host 的 header 一定要加,不然转发后 frp 拿不到通过哪个域名访问的,导致转发失败
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-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;
    }
    }
    server {
    # 监听 nginx 80 端口
    listen 12346 ssl;
    # 域名配置 记得一定要加上*.frp.xxx.com + frp.xxx.com 这个,只加 frp.xxx.com 是不行的,无法支持泛域名做 sub 模式
    server_name *.frp.xxx.com frp.xxx.com;
    ssl_certificate ./cert.crt; # SSL 证书路径
    ssl_certificate_key ./cert.key; # SSL 密钥路径
    location / {
    proxy_pass https://127.0.0.1:11345;
    # 对反代连接启用 SNI 支持
    proxy_ssl_server_name on;
    proxy_ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    # 设置 SNI 目标域名
    # proxy_ssl_name 162020.xyz;
    # 这个 Host 的 header 一定要加,不然转发后 frp 拿不到通过哪个域名访问的,导致转发失败
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-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;
    }
    }
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   978 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 22:03 · PVG 06:03 · LAX 14:03 · JFK 17:03
    ♥ Do have faith in what you're doing.