1. 首页
  2. 科技数码

关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

前言

最近终于将qnap更新到5.0了,对于我来说最有用的几个功能之一是增加了系统自带的反向代理功能

之前是使用docker配合nginx来实现,最近自己的域名到期了,续费感觉好贵关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

于是改用qnap自带的ddns,使用com域名还能自动续期letsencrypt的证书关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

对于我来说已经足够了,目前也没有更多地需求,于是就准备转向使用自带的反向代理

使用过程中遇到了一些坑,在此和大家讨论下

介绍下反向代理

qnap的反向代理使用起来比较简单,位置如图

qnap 反向代理位置qnap 反向代理位置

qnap 反向代理位置

直接添加规则即可

关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

如图就可以将访问本地的10010端口代理到10086端口,协议包装为https

这对于某些强制需要https的应用来说非常有用,比如bitwarden、joplin

你只需要在这一处添加证书,并且qnap会自动续期证书关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

同时你可以使用一些访问控制配置文件,来指定哪些ip能访问,有一定的安全性

关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

简单使用的话其实就已经可以了,易用性也还不错,跟群晖的基本一致

但如果要有更进一步的配置就有点麻烦了关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究 ,比如下面要说的joplin

遇到问题

这里先推荐下joplin,一个基于md的开源的笔记软件,还是比较好用的(就是有点丑关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

之前使用joplin都是搭配webdav使用,但webdav效率确实不怎么高,坚果云还有一堆限制关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

并且看网上说法还容易出现同步的bug?

最近去官网溜达发现joplin server已经出到2.x beta了,感觉应该没啥大的问题的,就琢磨着转向joplin server

按照官方的说法,比nextcloud和webdav更快速和高效

官方的速度比较官方的速度比较

官方的速度比较

简单介绍一下基于docker的joplin server搭建

官方的介绍使用了env文件,但是在qnap上使用比较不方便,实际上env文件里只是配置了docker的一些环境参数而已,所以我还是决定直接创建(qnap也可以使用yaml),

根据官方建议,使用PostgresSQL 数据库存储(图简单可以使用sqlite,但我找了很久没找到db文件存储位置。。。不好备份,所以放弃了关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究 ,并且数据量大了后PostgresSQL 更有优势)

qnap使用container station ,先拉取 postgres 官方镜像,注意从dockerhub拉取,qnap推荐版本低了点

关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

拉取后创建

关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

环境注意后面三个,分别是数据库名、密码、用户名,这三个后续会使用,

网络方面自行映射5432端口,

关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

持久化方面自行映射本地文件夹至 /var/lib/postgresql/data

关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

至此postgres创建完成,后续数据备份只需要备份数据库文件夹,我这边使用hybrid backup sync实时同步备份至ondriver,且定时冷备份到异地,数据还是比较有保障的

然后创建joplin server,使用 joplin/server 官方镜像,创建容器时注意配置环境

关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

APP_BASE_URL :后续访问joplin server使用的域名,需要https,需要完全一致

APP_PORT: 端口,默认23000

DB_CLIENT:pg 使用postgres数据库

POSTGRES_DATABASE:postgres数据库,同之前创建的数据库名

POSTGRES_HOST:数据库ip,同一机器使用本机ip即可

POSTGRES_PASSWORD:数据库密码,同之前设置

POSTGRES_PORT:数据库端口,同之前设置,默认5432

POSTGRES_USER:数据库用户名,同之前设置

端口映射22300,建议不改,若修改则反向代理处响应修改

关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

之后启动即可,注意先启动数据库,然后启动joplin,否则joplin可能会报错

启动成功后可以使用本地访问ip:22300,出现下面可认为已启动

关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

这里就出现了一个坑,之前无论怎么改都是这个invalid origin error关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

看报错可以大概知道是joplin会校验Origin,与APP_BASE_URL 不一致就会出现这个问题

官方解释也是如此

关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

至于解决方法需要用到反向代理,并且方向代理需要一些配置传递原origin

实际上官方也给出了答案关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

nginx添加 proxy_set_header host $host;

apache添加 ProxyPreserveHost on

之前我是使用nginx转发的,贴一个我之前使用的ngixn配置

关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

主要是将https 22301端口代理到22300端口

最终的访问路径为 https://xxx.myqnapcloud.com:22301,

这个路径必须与APP_BASE_URL 里填写完全一致!!!包括端口关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究 (别问我为什么知道,试了好久)

至此就可以访问了,关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究 使用默认的账户名 admin@localhost 和密码 admin 登录,然后修改账号和密码即可

登录进去就能看到一些统计,如图

关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

客户端方面配置为joplin server即可

关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

至此就可以正常使用了关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

转向qnap自带反向代理遇到的问题

现在准备把ngxin转为qnap自带的代理

然后问题来了,配置22301到22300的反向代理后,报invalid origin error错误。。。。

解决方法倒是有,可是在qnap上怎么配置?关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

首先得确定qnap使用的什么来反向代理关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

经过一番查找(ps),可以知道使用的是apache来做的

位于/usr/local/apache/bin/apache

apache 的话需要添加 ProxyPreserveHost on 配置

然而在页面上查看了下根本没有更详细的配置。。。

页面上倒是有高级配置

关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

可是只能配置超时和自定义标头等信息

这下就麻烦了。。。离成功只差一步啊关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

后来想了下能不能自己去编辑实际的apache 配置,当时感觉自己很机智关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

于是掉入了一个坑中关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

qnap的反向代理使用得比较少,网上资料太少了关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

不过经过几天的努力,还是基本弄清了流程,这里分享给大家关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

首先确定了是apache,就顺着apache去找配置,发现配置在/etc/config/apache/下

关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

extra 内基本就是自带的一些映射配置

关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

一番查找并没有找到我们自定义的配置关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

挨着查看了几天。。。眼睛都看花了也没找到。。。关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

都准备放弃了时偶然发现在修改qnap的方向代理时会调用/etc/init.d/reverse_proxy.sh这个脚本关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

终于看到点希望了,赶紧去看下这个脚本,内容折叠了下

关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

终于看到了熟悉的身影关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

这里大概给大家理一下流程

当用户在页面上配置了反向代理规则后,qnap会将用户的规则保存到/etc/config/reverseproxy/reverseproxy.json 中

关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

这是一个json格式的文件,内容如图

关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

是不是很熟悉,就是将页面上的配置以json格式保存了下来

随后使用/etc/init.d/reverse_proxy.sh 这个脚本来解析json,

这些配置被解析生成为apche 配置,存放于/etc/reverseproxy/extra/下

根据配置会有多个,命名方式为1.conf 2.conf …

关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

我们去看下这些配置

关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

啊。。。。熟悉的apache配置关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究 ,终于看到你了,并且端口也是我自定义的端口关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

然后会调用

/usr/sbin/reverseproxy -k start -f/etc/reverseproxy/reverseproxy.conf 来启动用户自定义规则

/usr/sbin/reverseproxy 是快捷方式,实际指向/usr/local/apache/bin/apache

我们看下reverseproxy.conf最后一行

关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

包含了/etc/reverseproxy/extra/下所有conf文件

至此就将我们的规则运行起来了

现在知道了流程,就需要考虑怎么来实现我们的需求了

我现在的需求是添加 ProxyPreserveHost On 这个配置

方法有两个,

一是修改reverse_proxy.sh这个脚本,在生成配置时就注入,不过这个需要改脚本,且页面上没有相应的配置界面,pass

二是直接修改生成好的配置,这个就比较简单了

去/etc/reverseproxy/extra/ 下看下,找到我们需啊哟修改的配置,添加即可,如图

关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

这样就将配置加入进去了关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

下面是如何让他生效呢?

经过测试,在页面关闭、启动这个条规则会删除原有规则并重新生成关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

这就又绕回去了关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究 。。。

经过查看sh脚本,发现是在start_proxy 时会删除原有配置,然后根据json解析生成新配置

我不想修改脚本,所以只能绕过,

经过查找,发现在reload_proxy这个方法不会触发删除,只会调用

/usr/sbin/reverseproxy -k graceful -f/etc/reverseproxy/reverseproxy.conf

重新加载配置

所以我们可以这样,在页面添加必要的参数后保存、启动

然后ssh到设备,添加修改我们需要的参数,执行

sudo /etc/init.d/reverse_proxy.sh reload

这样配置就加载成功了,测试使用正常关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

总结

目前测试了下手动修改配置,在页面添加或删除规则不会触发删除原有规则

启动或停止会触发

nas重启也会触发

想要更完美得去改脚本了,不过我nas基本不关机重启,反向代理配置好后基本也不会去动它

所以目前就算是完成了,配合qnap自己的ddns和自动更新证书还是比较香的关于joplin server 的搭建 及qnap QTS5 反向代理的一些研究

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

原创文章,作者:夜风博客,如若转载,请注明出处:https://www.homedt.net/47187.html