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

自建 bitwarden 的一些咨询

  •  
  •   ugenehan · 12 天前 · 2144 次点击

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

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

    这样配置,内外网都可以直接通过域名访问内网服务,实现内外网无缝切换。
    sadara
        8
    sadara  
       12 天前
    那啥,nas 装个 lucky ?感觉上边说的好复杂
    huang86041
        9
    huang86041  
       12 天前
    就像楼上说的,本地 nas 有公网的话,申请个域名,安装 lucky ,自动更新证书和域名再加反代。 感觉这样比较简单
    dlwlrm
        10
    dlwlrm  
       12 天前
    小白问下为啥要自建啊,我都是用官方的服
    cnlaok999
        11
    cnlaok999  
       11 天前 via iPhone
    走 cf 的隧道最方便
    ugenehan
        12
    ugenehan  
    OP
       11 天前
    @totoro625 我现在群晖反代,网页可以正常访问,但是手机客户端就无法访问
    ugenehan
        13
    ugenehan  
    OP
       11 天前
    @fengci 我试一下
    zhhmax
        14
    zhhmax  
       11 天前
    直接在阿里云 ECS 上部署多简单
    securityCoding
        15
    securityCoding  
       11 天前
    cf tunnel docker 装就好,我已经稳定跑了两年没啥问题
    icaolei
        16
    icaolei  
       11 天前
    @dlwlrm #10 官方服务免费版不能用 TOTP ,自建的可以用。
    gvdlmjwje
        17
    gvdlmjwje  
       11 天前
    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  
       11 天前
    上面这个是我之前的方案,22 年魔都电信封公网服务,所以停用公网 IP 用了云服务器;去年末改成公网 IP+nginx proxy manager+DDNS-GO 方案了,直接白嫖赛博菩萨 let's encrypt 的免费证书配合 npm 到期自动更新。省掉了一年 300 多的云服务器和每年手动更新群辉域名的麻烦。我看现在很多人用 luckytool 了,貌似比 npm 更简单。
    frankilla
        19
    frankilla  
       11 天前
    我用 lucky 反代,域名访问。
    hanierming
        20
    hanierming  
       11 天前
    我是在 ECS 把指定域名的 443 端口的请求,转发给 18443 端口,然后在 fprc 中,转发 fprs 的 18443 到本地的 18443 端口中,然后本地的 18443 端口是一个 nginxproxymanager 的 docker ,最终在 nginxproxymanager 的图形化页面里面配置各个域名指向本地不同的端口。
    dlwlrm
        21
    dlwlrm  
       11 天前
    @icaolei 原来如此……我都是氪金的
    KegFmn
        22
    KegFmn  
       11 天前
    公网:nginx proxy manager 负责 SSL ,frps 转发
    内网:openwrt frpc 转发
    sowhen
        23
    sowhen  
       11 天前
    cf tunnel 不二之选,方便快捷
    BAT
        24
    BAT  
       11 天前
    @dlwlrm #9 可能为了使用两步验证和上传文件功能
    icaolei
        25
    icaolei  
       11 天前
    @dlwlrm #21 是的,开订阅可以解决功能使用问题。但是管理和数据自持这俩问题还是解决不了。有服务器的情况下自建还是比较优的,做好数据备份就行了。我用了 vaultwarden-backup 项目,每个小时把数据库加密备份到本地、坚果云、阿里云、百度云、群晖上,理论上没有任何风险了。
    lxh1983
        26
    lxh1983  
       11 天前 via iPhone
    域名指向群晖,群晖 ssl 反代不就可以了吗?都用不着 ecs 啥事
    ugenehan
        27
    ugenehan  
    OP
       10 天前
    @lxh1983 手机客户端不能正常登录吧?
    lxh1983
        28
    lxh1983  
       10 天前 via iPhone
    @ugenehan 不管手机还是 web 都能正常访问啊
    ugenehan
        29
    ugenehan  
    OP
       10 天前
    @lxh1983 群晖是公网 IP ?
    ugenehan
        30
    ugenehan  
    OP
       10 天前
    @totoro625 有个奇怪的问题,frpc 日志显示代理成功了,frps 中却查不到这个端口
    totoro625
        31
    totoro625  
       10 天前
    @ugenehan #30 frps 的 log 显示有客户端连接了吗
    ugenehan
        32
    ugenehan  
    OP
       10 天前
    @totoro625 对应的代理,日志显示 start proxy success 了
    lxh1983
        33
    lxh1983  
       10 天前 via iPhone
    @ugenehan 对的,双栈公网
    ugenehan
        34
    ugenehan  
    OP
       10 天前
    @lxh1983 我没公网,只能用 ECS
    totoro625
        35
    totoro625  
       10 天前
    阿里云管理面板里面放行端口了吗?
    frps 会有一个 http 端口,在那台机器上 curl 一下看看返回什么内容
    另外,你的域名备案了吗
    ugenehan
        36
    ugenehan  
    OP
       9 天前
    @totoro625 找到原因了,设置了两个规则,一个是子域名,一个是端口。删除其中一个就好了
    ugenehan
        37
    ugenehan  
    OP
       7 天前
    @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   ·   实用小工具   ·   2842 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 05:40 · PVG 13:40 · LAX 21:40 · JFK 00:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.