用nginx proxy manager,打造真全平台可用的Joplin

2024-06-05 22:04:14 9点赞 63收藏 11评论

前言

之前部署了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,打造真全平台可用的Joplin

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

用nginx proxy manager,打造真全平台可用的Joplin

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

用nginx proxy manager,打造真全平台可用的Joplin

部署完成后,IP(unraid的ip或者设置的固定ip)+81就可以进入NPM登录页面,登录进去后会提示修改账号密码。到这里NPM安装就完成了。


SSL设置

在设置反向代理之前,先去申请SSL证书。

用nginx proxy manager,打造真全平台可用的Joplin

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

用nginx proxy manager,打造真全平台可用的Joplin

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

用nginx proxy manager,打造真全平台可用的Joplin

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就会自动生成一条记录

用nginx proxy manager,打造真全平台可用的Joplin

设置代理

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

用nginx proxy manager,打造真全平台可用的Joplin

这个新增代理弹窗

用nginx proxy manager,打造真全平台可用的Joplin

Domain Names :填写前面申请SSL的域名或者泛域名的子域名

Scheme:默认http

Forward Hostname / IP:填写Joplin所在IP地址

Forward Port :填写Joplin端口

除了Cache Assets不勾选,其他都可以勾选

Access List:不理会,默认

用nginx proxy manager,打造真全平台可用的Joplin

菜单上选择SSL

SSL Certificate:选择前面申请证书的域名或者泛域名

可以全部勾选

用nginx proxy manager,打造真全平台可用的Joplin

菜单上选择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,就是代理成功

用nginx proxy manager,打造真全平台可用的Joplin

其他设置

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


Joplin设置

容器设置

用nginx proxy manager,打造真全平台可用的Joplin

Joplin容器上需要调整参数“APP_BASE_URL”,设置为https://代理域名:映射/转发端口,后面进Joplin也是用这个地址

客户端设置

客户端这边就是把同步地址换成“APP_BASE_URL”的https地址就行。

然后就可以愉快的玩耍了用nginx proxy manager,打造真全平台可用的Joplin


最后

经过这么一些折腾,基本上实现全平台同步了。为什么说基本上,因为它还有个Web端,在Unraid应用中可以搜到JoplinAPP,这个就是Web客户端。Joplin同步体验还是不错的,而且本身还有一些插件可供拓展。

用nginx proxy manager,打造真全平台可用的Joplin

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

展开 收起
11评论

  • 精彩
  • 最新
  • 不如cf tunnel反代,家宽暴露http服务还容易被查

    校验提示文案

    提交
    这两个暴露的东西不是差不多吗,顶多暴露npm的端口 [惊喜] ,个人看法

    校验提示文案

    提交
    映射暴露了,cf tunnel没暴露。安全性上差不多,但不会被查

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • unraid网关指向旁路由 请问怎么设置?按教程没设置成功

    校验提示文案

    提交
    你是要设置啥

    校验提示文案

    提交
    反代啊,桥接模式容器不能联网

    校验提示文案

    提交
    收起所有回复
  • 楼主的nginx的配置,解决了我的nas在网页端无法查看docker容器日志的问题,特意登录张大妈感谢🙏

    校验提示文案

    提交
    [小眼睛]

    校验提示文案

    提交
    收起所有回复
  • 很高兴看到你用nginx proxy manager优化Joplin体验,欢迎分享更多技术细节和心得!希望能看到更多深度解析!

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
63
扫一下,分享更方便,购买更轻松