用nginx proxy manager,打造真全平台可用的Joplin
前言
之前部署了Joplin的服务,在没有用到VPN或者映射时,只能在局域网内同步。并且分享的笔记,分享出去后,别人也打不开。所以还是继续弄弄,把外网访问也捣出来。
一般情况下,Joplin用域名或者IP,就能完成同步设置,不过在找资料的时候,有人说IOS要用到https,才能正常同步笔记,我手里手机也不是苹果,没法去实验,不能确定真假。
为什么用nginx proxy manager
nginx-proxy-manager(下面简称NPM) 是一个反向代理管理系统,它基于 NGINX,提供了可视化界面,配置起来也简单,基本都是一键SSL和一键反代。这里也在Unraid的Docker来部署。
安装nginx proxy manager
Unraid-->应用-->搜索“nginx proxy manager”

选择“Nginx-Proxy-Manager-Official”镜像

这里面的参数基本上默认就行,我这里只改了网络类型,使用固定IP(这里是推荐使用这种方式来设置IP,转发以及IP隔离操作上都比较灵活)

部署完成后,IP(unraid的ip或者设置的固定ip)+81就可以进入NPM登录页面,登录进去后会提示修改账号密码。到这里NPM安装就完成了。
SSL设置
在设置反向代理之前,先去申请SSL证书。

菜单选择“SSL Certificates”,进入SSL管理页面,点击“Add SSL Certificate”

一般选择“Let's Encrypt”,这个是免费证书。如果已经申请了证书,且下载了证书,可以选Custom上传已有证书。

Domain Names:填写你要申请证书的域名,可以填完整域名,也可以填写泛域名
Email Address for Let's Encrypt:填写申请证书的邮箱
Use a DNS Challenge:勾选,原因是80端口一般是无法使用,所以用不了HTTP验证,只能用DNS验证,这个选项就是说用DNS验证
DNS Provider:选择DNS解析服务商,这个根据个人选择,比如我是选择DNSPOD
Let's Encrypt Terms of Service:同意选项,没啥好说。
Credentials File Content:这里是填写DNS服务商的凭据
我拿DNSPOD举例
dns_dnspod_email = "email@example.com" ,引号里面的内容换成DNSPOD的账号邮箱
dns_dnspod_api_token = "id,key",这里填写在DNSPOD里面创建的秘钥,前面是id,key就是生成的token
Propagation Seconds:这个默认空着就行。
填完后,点save就会自动生成一条记录

设置代理
在NPM管理界面,选择Hosts-->Proxy Hosts-->add proxy hosts

这个新增代理弹窗

Domain Names :填写前面申请SSL的域名或者泛域名的子域名
Scheme:默认http
Forward Hostname / IP:填写Joplin所在IP地址
Forward Port :填写Joplin端口
除了Cache Assets不勾选,其他都可以勾选
Access List:不理会,默认

菜单上选择SSL
SSL Certificate:选择前面申请证书的域名或者泛域名
可以全部勾选

菜单上选择Advanced
这里要填写一些nginx配置
location / {
proxy_pass http://IP:22300; # 将所有在此路径收到的请求转发到内部服务器 ,端口 22300,这里IP是需要代理的IP,也就是Joplin的IP。
proxy_http_version 1.1; # 使用 HTTP 1.1 协议向后端服务器发起请求。
proxy_set_header Upgrade $http_upgrade; # 将客户端的 Upgrade 头信息传递给后端服务器,通常用于 WebSocket 连接升级。
proxy_set_header Connection $http_connection; # 将客户端的 Connection 头信息传递给后端服务器,通常与 WebSocket 配合使用。
proxy_set_header Host $http_host; # 将客户端请求的 Host 头信息传递给后端服务器。
proxy_set_header X-Real-IP $remote_addr; # 将客户端的真实 IP 地址传递给后端服务器。
proxy_set_header X-Forwarded-For $remote_addr; # 在 X-Forwarded-For 头信息中插入客户端的 IP 地址,以便后端服务器知道请求来自哪里。
proxy_set_header X-Forwarded-Host $http_host; # 将客户端请求的主机名传递给后端服务器。
proxy_set_header X-Forwarded-Port $server_port; # 将客户端请求的端口号传递给后端服务器。
proxy_set_header X-Forwarded-Proto $scheme; # 将客户端请求使用的协议(http 或 https)传递给后端服务器。
proxy_set_header X-Forwarded-Scheme $scheme; # 同上,将客户端请求使用的协议传递给后端服务器。
}
有些可以不用,不过懒得筛选了,都放上去就行。
所有设置好后,点“save”保存,会生成记录,STATUS状态列下,显示Online,就是代理成功

其他设置
一般来说80和443都是用不了,所以还需要设置端口映射或转发,即用别的端口替代这两个
Joplin设置
容器设置

Joplin容器上需要调整参数“APP_BASE_URL”,设置为https://代理域名:映射/转发端口,后面进Joplin也是用这个地址
客户端设置
客户端这边就是把同步地址换成“APP_BASE_URL”的https地址就行。
然后就可以愉快的玩耍了
最后
经过这么一些折腾,基本上实现全平台同步了。为什么说基本上,因为它还有个Web端,在Unraid应用中可以搜到JoplinAPP,这个就是Web客户端。Joplin同步体验还是不错的,而且本身还有一些插件可供拓展。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

冲冲冲不冲不是人
校验提示文案
入有所操
校验提示文案
ChanGOGOGO
校验提示文案
AI购物管家-电脑数码
校验提示文案
ChanGOGOGO
校验提示文案
入有所操
校验提示文案
冲冲冲不冲不是人
校验提示文案
AI购物管家-电脑数码
校验提示文案