飞不高 发表于 2024-6-15 01:44:15

使用docker自建vaultWarden服务器并实现全平台https访问

配景

1台运行了DSM6.2的群晖,筹划在其上搭建1台bitWarden服务器,来替换keePass和1password,搭建过程中走了不少弯路,特此记载。
在搭建中尝试使用过群晖第三方套件源中的vaultWarden套件,但是版本过旧且配置也比力麻烦,最终选定用docker本身搭建。
搭建过程分为以下几个步调:


[*] docker拉取并安装vaultWarden

[*]坑1:解决黑群晖6.2套件中心和docker无法访问网络的题目

[*] vaultWarden在群晖中反向署理配置
[*] 阿里云ssl证书申请和配置
[*] 浏览器/手机端bitWarden连接配置
正式开始

第一个坑:解决群晖6.2套件中心和docker无法正常访问网络的题目

   具体症状:


[*] 套件中心报错:“套件中心连接失败,请检查您的网络和时间设置”
[*] docker中报错:”注册表查询失败“
首先使用ssh登岸群晖并ping外网域名确认网络是正常没有题目标,
   ssh登岸群晖使用ping下令会提示没有权限,可以使用sudo ping
   如果嫌弃每次使用sudo比力麻烦,可以使用"sudo su -"提拔为root权限
    解决办法:

[*] 由于群晖的套件中心和docker的注册表中心也就登岸管理时候使用,以是可以在要使用的使用临时使用署理规复网络功能
[*] 在个人使用的电脑上开启署理功能,然后在群晖中配置使用个人电脑上的署理即可
[*] 以clash为例,首先确认clash工作正常,然后勾选“允许局域网连接入Clash”和“系统署理”,并记住端口号,我用的是789
[*] 然后在cmd中输入ipconfig查看并记住本身电脑的ip(我这里ip为172.168.0.2,这里已经假设个人pc和群晖服务器是在可以正常互访的网络中)
[*] 在群晖控制面板中,点击“网络-常规-署理服务器”,填写步调1和步调2的端口和ip,点击应用
https://img-blog.csdnimg.cn/direct/327478cab21940e682875d40b81e1820.png
[*] 如果不出意外,这时候群晖的套件中心和docker注册表功能已经可以正常访问。
使用docker安装vaultWarden。

创建一个vaultwarden数据存放目录

在安装前必要在群晖中创建一个vaultWarden的目录,用于存放bitWarden服务器的数据文件,这个目录建议直接创建一个一级目录,仅开放权限给管理员即可,例如我的文件目录为:vaultwarden\data(这里仅为示例,现实使用可以根据本身的喜欢选择存放位置,不过这个位置一定要确保安全和便于备份)

[*] 打开file station,点击菜单:新增共享文件夹
[*] 在创建向导中输入名称:vaultwarden,勾选2个隐蔽的选项,去掉”启用回收站“,不加密,其他设置都默认
[*] 回到file station中,找到新创建号的vaultwarden文件夹,点击菜单:新增文件夹,创建一个名为data的文件夹
下载安装vaultwarden的docker容器

在docker注册表中搜索并下载”vaultwarden",现实完整的源地址是:“vaultwarden/server:latest”(我现实安装的是当前最新版本1.30,latest标签会保证你安装的就是当前时间的最新版)
安装时候必要留意,在创建容器向导中点击高级设置:

[*] 勾选启用自动重启
[*] 存储空间添加文件夹,选择前边创建好的vaultwarden/data,装载路径输入”/data“
[*] 端口将容器端口80对应的本地端口改为8057(仅为示例,可根据本身情况选择,建议不要设置1000以内的)
[*] 情况中点击加号,名称:TZ,值:Asia/Shanghai,此处为设置服务器的时区,防止与现及时间不同
完成并启动后,此时应该可以通过http://群晖服务器ip:8057访问vaultWarden的网页端了,但是由于不是https访问,以是不能登岸不能注册
下边就看本身个人需求,如果只必要网页端和浏览器插件端使用,那可以看下边反向署理实现https访问的方法,如果必要在pc或手机的app端访问使用,那可以看下边注册ssl证书实现https访问的方法,这两个方法二选一即可。
反向署理实现https访问的方法:


[*] 打开群晖的控制面板-Synology应用程序门户-反向署理服务器,点击新增
[*] 泉源协议:HTTPS,泉源端口:8058(留意:这里端口要和前边的端口区分开)
[*] 目标地协议:HTTP,目标地端口:8057(留意:这里是前边的8057端口(现实映射了vaultwarden服务器的80端口)
https://img-blog.csdnimg.cn/direct/6c415de8fcba496db9278fad829dcb5b.png
[*]此时在内网输入 https://群晖服务器ip:8058 就可以使用https方式访问了,可以正常注册和登岸,将前边的地址加端口复制到浏览器bitWarden插件中也可以使用插件登岸服务器(但因为没有有效的证书,以是浏览器照旧会表现”不安全“,以是pc端和手机端的app依然无法正常登岸)
注册ssl证书实现https访问的方法:

本方法可以实现全平台正常登岸服务器,但必要以下几个条件:

[*] 有一个有效的可管理的域名
[*] 内网服务器映射外网访问必要有网关路由的权限(是家用路由情况也可以)
[*] 有公网ip
教程开始

[*] 个人使用的是阿里云注册的域名,证书申请也使用阿里云的ssl证书注册服务,免费但仅有3个月有效期
[*] 证书申请

[*]登岸阿里云,点击搜索框,搜索并打开数字证书管理服务(SSL证书),点击SSL证书 - 免费证书,点击下边的立即购买,选择个人测试证书,其他默认,费用是免费,点击立即购买
[*]然后点击创建证书,选择默认证书,输入绑定给群晖服务器的域名

[*]假设你的域名是abc.com
[*]如果你最终直接使用abc.com:8057访问你的 vaultWarden服务器,那么这里你就应该直接填写abc.com

[*]如果你是使用二级域名访问(例如:bw.abc.com:8057),那么这里你应该填写bw.abc.com


[*]域名验证方式:自动DNS验证,填写本身的接洽信息和所在地等信息后提交

[*] 证书验证

[*] 在证书列表中,点击后边的验证按钮,打开验证页面,分别复制里边的主机记载和记载值(这个窗口不要关,后边步调要继续使用)
[*] 登岸本身的域名管理页面(以我的阿里云域名为例),设置DNS验证要使用的剖析记载

[*]打开域名列表,点击后边的剖析,打开域名剖析设置页面
[*]添加记载,记载范例选择:TXT,主机记载:粘贴刚刚复制的主机记载,记载值:粘贴刚刚复制的那一长串记载值,点击确认

[*] 回到证书验证页面,点击验证按钮,提示验证成功就说明设置正确,如果未成功请检查步调5-6的设置是否正确对应
[*] 成功并提交后,等待证书审核通过即可(阿里云的审核在5-20分钟左右,成功后会收到站内消息和短信提示)

[*] 证书下载和安装

[*]收到证书审核通过消息后,在证书列表页面,点击后边的下载按钮,选择Nginx后边的下载即可

[*]下载到的压缩包里会有2个文件,分别是扩展名为key的私钥和pem的证书,文件名默认为你申请的域名,假设你的域名是bw.abc.com,那么你的两个文件应该是:

[*]bw.abc.com.key
[*]bw.abc.com.pem


[*]回到群晖的文件管理页面file station,打开在前边创建好的vaultwarden\data目录,在里边创建一个文件夹ssl,然后将上一步中下载到的2个证书文件上传进去

[*]最终存放2个证书文件的目录是vaultwarden\data\ssl
[*]因为vaultwarden\data在创建vaultWarden的docker容器时候已经映射到了docker容器内了,以是在docker的 \data\ssl 目录下也能看到刚刚上传的2个证书文件

[*]在docker-容器中找到前边创建好的vaultwarden服务器,选中后点击上边的编辑按钮(如果按钮是灰色的就先停止vaultwarden服务器)
[*]编辑页面点击情况,点击加号新增

[*]名称:ROCKET_TLS
[*]值:{certs="/data/ssl/bw.abc.com.pem",key="/data/ssl/bw.abc.com.key"}

[*]请留意将示例中的bw.abc.com更换为你现实的证书文件名


[*]应用并启动vaultwarden服务器

[*] 设置域名绑定(有静态公网ip的话设置a记载绑定,动态公网ip可以使用ddns绑定,没有公网ip可以考试使用sd-wan,根据本身情况选择)
[*] 设置端口映射,将vaultwarden服务器的8507端口映射到出口路由器的对应8507端口

[*]注:使用ssl证书的方法就不必要再设置反向署理了,以是直接使用vaultWarden的端口即可

[*] 如果域名绑定正确,即可使用域名+端口访问vaultwarden服务器https://bw.abc.com:8507,可以成功访问后就可以将前边域名+端口复制到pc或手机端的bitWarden的app中使用了
内网访问题目

内网使用域名加端口方式访问出现502bad gateway错误

以下2个解决办法二选一
解决办法1:编辑本机hosts文件,添加服务器ip 域名,例如:

   192.168.16.10 bw.abc.com
windows系统hosts文件路径:c:\windows\system32\driver\etc\hosts
mac系统hosts文件路径:/etc/hosts
留意事项:修改请留意权限题目,例如windows下修改该文件必要使用管理员权限打开记事本,然后再打开hosts文件修改才能保存
解决办法2:在路由器的dns服务器上添加内网服务器和域名的映射,同时设置dhcp的dns为路由器ip,或直接设置本机上dns服务器为路由器ip(下图以H3C和华为AR的2款路由器dns server设置示例,不同路由器设置方法大同小异

https://img-blog.csdnimg.cn/direct/8ba1929d08c64fc1bc8d64ab1b12d43e.pnghttps://img-blog.csdnimg.cn/direct/aaea13a5b3f74b3dba08ffc4d8d2abd4.png
其他留意事项

使用clash或其他软件并同时在内网访问服务器时,必要留意将域名、服务器ip段在软件中添加排除(排除后访问流量就不爬楼而变成了直达),否则上边全部设置正确也会无法访问

以clash为例,排除指定域名和地址的方法:

[*] 点击设置-系统署理-系统署理绕过的域名/ip网段
[*] 在弹出的窗口中添加域名和服务器ip即可
在路由器上设置了dns服务域名映射,但照旧无法访问

验证dns映射正确的方法:直接ping服务器域名,例如:ping bw.abc.com,看测试过程中的ip是不是服务器的内网ip,如果是,则表现dns域名映射正确,如果不正确可以根据下边步调排查:

[*] 确保路由器上开启了dns服务器功能,而且域名和ip映射设置正确
[*] 确保dhcp服务器的dns服务器ip已设置为了路由器的ip(可以使用ipconfig /all查看)
[*] 确保本机已经重新获取了最新的ip(可以使用ipconfig /renew重新获取ip)
[*] 使用ipconfig /flushdns革新dns缓存,并关闭重启浏览器
关闭vaultwarden的注册功能

如果服务器是个人使用,在本身账号注册完毕后可以关闭注册功能

[*] 在docker中关闭vaultwardne,然后点击编辑
[*] 在情况中点击加号添加变量:SIGNUPS_ALLOWED=false

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 使用docker自建vaultWarden服务器并实现全平台https访问