继续玩NAS——为知笔记docker私有部署升级

2021-12-24 21:00:18 32点赞 222收藏 43评论

在上次讲解自己的NAS使用文章中提到了自己部署了一个docker版的为知笔记来使用,其实部署好之后也是偶尔用用,中途还更换尝试了其他笔记工具。就在最近一段时间,为知笔记放出了全新的重构版,使用功能体验上有了很大的升级。在这段时间中使用重构版后决定对部署的笔记服务进行一次安全升级,特别是前段时间遇到有人尝试非法登录我的DMS服务。

穷玩NAS——在蜗牛星际上部署私有笔记工具创作立场声明:除了群晖自带的DSnote笔记工具外,还有其他不错的私有云笔记工具可以在nas上方便使用,本文就分享了两个自己一直在使用的私有云笔记工具,抛砖引玉看看大家都是使用什么样的云笔记工具的。本文涉及到docker工具的安装、域名配置、外网访问设置等操作。早在19年的时候赶上当时的矿渣末班车入GOLDENLAMB| 91 评论60 收藏804查看详情

自从上次在系统日志里查看到有人尝试登录我的群晖DMS,我就立即将所有DMS服务端口进行了修改,并强制切换成https访问,还调整了群晖系统的安全策略。并且把DMS的默认管理员账号禁用,重新对已有账号密码进行修改成更复杂的密码,开启邮件监控和两部验证。最后就只剩下配置的docker服务还是http协议的,所以就准备在这次为知笔记升级一起升级一下。

继续玩NAS——为知笔记docker私有部署升级

为知笔记推出桌面重构版后,文档的数据结构进行了调整,新文档在旧客户端中不能编辑,所以需要升级相应的docker镜像、桌面程序和移动端APP才能实现全终端统一的使用体验。因为之前已经配置好了为知笔记的docker容器了。更新容器镜像我是通过使用portainer工具来进行无损升级,如果使用群晖自带的docker工具就稍微麻烦点,需要删除容器重下新版的镜像。升级好之后重新进网页版的为知笔记就能看到新版的界面。

继续玩NAS——为知笔记docker私有部署升级

群晖自带反向代理服务器配置

在上一篇文章中已经配置过笔记本容器的外网访问了,不过这个时候还都是默认的http访问,如果对安全性没有这么高的需求,直接在为知笔记软件里使用自己设置的外网地址就能对接到自己docker服务器。对于开启https访问,在为知笔记的官网有详细的部署说明。

https://www.wiz.cn/zh-cn/introduction-docker-nas
https://www.wiz.cn/zh-cn/docker-https

其实在官网的部署说明中就已经有介绍如何开启服务端的https访问配置,群晖系统自带一个反向代理配置功能。

继续玩NAS——为知笔记docker私有部署升级

继续玩NAS——为知笔记docker私有部署升级

结果我在自己的群晖上进行配置的时候发现,我所使用的群晖系统配置界面和介绍教程中的不一样,没有反向代理配置的自定义配置选项卡。当时也没多想就直接配置了,结果发现倒是可以实现https访问,但是文档却打不开。

继续玩NAS——为知笔记docker私有部署升级

经过多次设置发现,文档打不开的情况只会出现在使用https协议时,而且桌面客户端不会出现这个问题,只有网页版和手机端会出现。通过网页调试工具发现了问题所在,有一个wss的websocket服务协议连接失败。

继续玩NAS——为知笔记docker私有部署升级

后来查了一下资料发现群晖系统在6.2之前的版本里会有这个bug,在反向代理https时会不能处理wss协议,这也解释了为何官方的介绍里配置界面和我的不一样。这个问题在6.2之后的群晖系统里非常好解决,直接在自定义配置界面里添加一下行了。结果我的群晖系统刚好是6.17,而且我的nas还是黑裙,不敢轻易升级系统。于是只能尝试安装nginx来手动配置了。

继续玩NAS——为知笔记docker私有部署升级

Nginx反向代理配置

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

在群晖的docker工具中可以直接安装nginx,虽然为知笔记官方有介绍如何配置nginx来实现https访问,但是官方那个说明有点过于简约了,只适合对nginx熟悉的人。又是一番资料查找,终于有了个大概了解,参考了几篇比较详细的教程完成了nginx的配置。在创建nginx的docker容器前,需有做好以下准备工作。首先在nas按照以下目录结构创建nginx的配置目录。

继续玩NAS——为知笔记docker私有部署升级

把自己的域名SSL证书放到conf.d目录下,我这边专门创建了个域名的文件夹来放置。这个证书可以从域名网站下载,如果nas里已经配置过证书了也可以直接导出。导出的证书可能是csr和key的文件,或者是两个pem文件,后续过程中我只使用了pem的证书文件。

继续玩NAS——为知笔记docker私有部署升级

然后再创建两个配置文件nginx.conf default.conf分别放置在nginx conf.d目录下。配置文件的内容分别如下。
nginx.conf的配置内容,不需要调整直接复制使用即可。

user nginx;
worker_processes auto;

error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

events {
worker_connections 2048;
}

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;

sendfile on;
keepalive_timeout 65;
client_max_body_size 10M;

include /etc/nginx/conf.d/*.conf;
}

default.conf的配置文件需要针对各自的具体情况来填写,配置文件中以我的系统状态为基础进行的配置,可以先复制创建后,再做修改。

#docker进行关联,和下面的proxy_pass对应

upstream web{
server wiz:80;
}

server {
listen 80;
listen 127.0.0.1;
listen [::]:80 default_server ipv6only=on;
server_name xx.com;
return 301 https://$host$request_uri;
}

server {
# Enable HTTP/2 反向代理访问的地址,需要在docker页面预先配置
listen 10002 ssl http2;
listen [::]:10002 ssl http2;
server_name xxx.com; #你的域名

# root /etc/nginx/templates;

#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
#SSL-END

#ERROR-PAGE-START 错误页配置,可以注释、删除或修改
#error_page 404 /404.html;
#error_page 502 /502.html;
#ERROR-PAGE-END

#REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
#REWRITE-END

#禁止访问的文件或目录
location ~ ^/(.user.ini|.htaccess|.git|.svn|.project|LICENSE|README.md)
{
return 404;
}

#一键申请SSL证书验证目录相关设置
location ~ .well-known{
allow all;
}

# 这里为具体的服务代理配置
location / {

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header x-wiz-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Proto "https"; #强制开启https
proxy_set_header X-NginX-Proxy true;

#--解决转https代理后wss协议无法连接的问题
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
#proxy_set_header Connection "keep-alive";

proxy_set_header Host $http_host;
proxy_pass http://172.17.0.2:80; #使用docker的内部地址,需要在docker配置工具中查看
proxy_ssl_session_reuse off;
proxy_cache_bypass $http_upgrade;
proxy_redirect off;
}

ssl_certificate conf.d/xxx.com/cert.pem;
ssl_certificate_key conf.d/xxx.com/privkey.pem;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_timeout 10m;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_buffer_size 1400;
add_header Strict-Transport-Security max-age=15768000;
ssl_stapling on;
ssl_stapling_verify on;
}

下面来对配置参数做具体说明,修改配置文件的同时需有创建nginx的容器,在创建容器时,配置容器的存储空间选项卡,就按前面创建的文件路径来勾选填写。

/etc/nginx/nginx.conf
/var/log/nginx
/usr/share/nginx/html
/etc/nginx/conf.d

继续玩NAS——为知笔记docker私有部署升级

端口配置页面就设置需要通过外网访问的端口号,我这里设置成了10002端口。

继续玩NAS——为知笔记docker私有部署升级

在链接选项卡中选择已经创建好的为知笔记容器,别名可以写的简单点,配置文件中需要用。

继续玩NAS——为知笔记docker私有部署升级

容器设置好之后,可以先把容器保存不要启动,启动会报错。接下来就开始修改default.conf配置文件,没有提到的地方就不用修改,因为我自己也不知道为何这么写,反正就是需要。

在这段配置项中wiz就是设置的为知笔记容器别名,为知笔记容器默认的内部端口是80。

#docker进行关联,和下面的proxy_pass对应
upstream web{
server wiz:80;
}

在创建容器的时候填写了10002端口为外网的访问端口,配置文件里的这部分也需要按容器配置的来,域名替换成自己的域名即可。

# Enable HTTP/2 反向代理访问的地址,需要在docker页面预先配置
listen 10002 ssl http2;
listen [::]:10002 ssl http2;
server_name xxx.com;

配置文件中proxy_pass需要配置成为知笔记docker容器的局域网内部地址和端口

proxy_pass http://192.168.x.x:1234; #使用docker的内部地址

最后就是配置域名的ssl证书了,这个就按照文件的路径填写即可。

ssl_certificate conf.d/xxx.com/cert.pem;
ssl_certificate_key conf.d/xxx.com/privkey.pem;

配置文件保存后启动nginx容器,如果启动成功,现在就能通过https://xxx.com:10002这个地址打开网页版的为知笔记了。通过nginx来进行https的反向代理肯定是比群晖系统自带的功能配置起来麻烦,如果群晖系统比较新的还是建议直接参看官方说明使用系统工具来配置。

重构版为知笔记功能介绍

自己之所以要这么折腾nas就是为了更好地使用新版的为知笔记,这次重构升级之后的为知笔记在功能上已经完全升级换代了。自己也差不多使用了两个多月了,因为目前官方也是在不断更新功能修复bug,但是按目前的完成度来说,已经可以作为日常使用的工具了。在使用重构版为知笔记之前需要注意旧版笔记的兼容问题,在打开旧版笔记时软件提供转换功能转换成新版笔记,但是这个不可逆,但是这个只针对单篇文章操作。如果历史数据过多的用户,慎重操作;如果是像我这样没有历史数据包袱的全新用户,就可以直接使用新版的笔记文件。自己总结了几点自己非常看重的重构版为知笔记特点。

  • WYSIWYG所见即所得

  • 块编辑

  • 更好的表格工具块

  • 内置图形化流程图工具块

  • 双链,支持文章和内容块

  • 多终端使用,pc、mac、linux、ios、安卓、web

更多功能介绍参考 https://www.wiz.cn/zh-cn/wiznew.html

继续玩NAS——为知笔记docker私有部署升级

重构版的为知笔记界面也调整成为现在流行的三栏式,笔记已经只有两种文档格式,MD笔记和大纲笔记。MD笔记转变成所见即所得的编辑模式,这样使用起来也是更方便了。新的工具块里支持快速插入功能模块。

继续玩NAS——为知笔记docker私有部署升级

新版的表格样式更好看,添加行列也更方便,支持单元格合并,还能插入图片。这个表格工具算是我用过的笔记工具第一梯队。

继续玩NAS——为知笔记docker私有部署升级

继续玩NAS——为知笔记docker私有部署升级

内置的流程图工具算是我的最爱了,再也不用单独使用其他流程图工具画好后再截图贴到笔记里。现在内置了draw.io的流程图工具,嵌入的流程图直接修改编辑就行了,导出pdf也不成问题。而且流程图的自由度特别高,使用也简单,用过draw.io的都知道。

继续玩NAS——为知笔记docker私有部署升级

继续玩NAS——为知笔记docker私有部署升级

为知笔记最近也更新了双链功能,现在能实现内容块的关联了,具体的双链功能说明参看官方说明,还提供了一个简单的双链图谱来查看,因为自己一直在使用思源笔记,为知笔记的双链功能还略显简陋还需要再看看后面有没有改善。

继续玩NAS——为知笔记docker私有部署升级

重构版的新版文档在各个终端里都能查看编辑,但是手机APP里无法编辑流程图,其他内容基本都能进行操作,这个也无关痛痒了。简单介绍了下重构版的为知笔记功能,目前更新的功能还是能满足自己的使用需求的,特别是流程图工具块。另外目前需要吐槽的是把以前最明显的标签功能隐藏得很深,不好给笔记添加标签来进行管理了。

配置nginx的参考文章链接
官方部署置说明
https://www.wiz.cn/zh-cn/introduction-docker-nas
https://www.wiz.cn/zh-cn/docker-https
《群晖docker 使用Nginx反向代理》
《今天折腾了个为知笔记》
400报错解决 https://developer.aliyun.com/article/569969
WebSocket使用Nginx反向代理解决Wss服务问题

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

展开 收起
43评论

  • 精彩
  • 最新
  • 我也在用思源,你感觉哪个使用体验更好?

    校验提示文案

    提交
    思源和wiz两个我都在用,目前wiz还是用的稍微多点。思源还是强在双链功能上,编辑器体验、同步以及移动端使用还是差点意思,我目前是买了会员使用官方同步才能有好的体验,如果只在电脑上用还是思源强点,特别是用来做知识库组织。wiz我目前也是多用于日常事项笔记,编辑器功能体验还是要比思源好不少,特别是移动端的方面。

    校验提示文案

    提交
    刚刚看了一下,思源的镜像191MB,为知笔记2GB,这差别也太大了。

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 感谢分享。我装了个思源,到现在都没用过….dsm 7.01的自带的反代,貌似过段时间就连不上了,不知道是不是bug….另外,为之不需要web socket吗?反代里没体现

    校验提示文案

    提交
    那可以试试装个nginx

    校验提示文案

    提交
    群晖反代没遇到啥问题 [皱眉]

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • OB+群晖(sync)完美解决

    校验提示文案

    提交
    ob还是用不习惯,所见即所得的编辑器好用点

    校验提示文案

    提交
    收起所有回复
  • 依然用的是很原始的知识管理系统 ,用同步搞定。myBase_v6.5.0 。。。

    校验提示文案

    提交
    mybase功能确实丰富,不过之前尝试了下还是不太喜欢这种编辑方式,无法在手机上使用。

    校验提示文案

    提交
    收起所有回复
  • 大佬,为知的这个意思是重构了客户端?docker上的服务端不需要变,只需要安装新版的客户端吗?

    校验提示文案

    提交
    我之前是可以,最好是更新下docker镜像

    校验提示文案

    提交
    [高兴] 就是docker显示已经是最新版了才没弄懂这个重构到底是什么情况的。

    校验提示文案

    提交
    还有3条回复
    收起所有回复
  • docker是不是除了网页剪藏,其他都跟VIP一样

    校验提示文案

    提交
    是的,基本没差

    校验提示文案

    提交
    收起所有回复
  • 求助,为啥我升级2.7的镜像后,安卓的模板功能没法用了。点进去啥都没有。尤其是在设置里点默认笔记模板,一片白,然后等一段时间就闪退。

    校验提示文案

    提交
    似乎是新旧笔记数据兼容问题,现在新的镜像都是按新的笔记类型来记录的了,app也同步更新了,可能旧版的模板就会有兼容问题。

    校验提示文案

    提交
    我打算新装一个镜像试试

    校验提示文案

    提交
    还有4条回复
    收起所有回复
  • 我是docker版的, 我用 Nginx Proxy Manager做反向代理后,访问没办法同步笔记难道是 Nginx Proxy Manager默认的配置的问题?

    校验提示文案

    提交
    可能是nginx配置问题,建议先用web端看看是否正常,再尝试客户端。

    校验提示文案

    提交
    收起所有回复
  • 在公司的群晖上全新部署了为知笔记1.0.27版。发现跟自己家里的界面还是一样的啊。但跟官方提供服务的重构版不一样,没有更好的表格工具,没有流程图工具等等。
    作者你的截图我看到好像是用的pc客服端,而且带会员图案,这个是官方服务的笔记,不是本地部署的版本吧?

    校验提示文案

    提交
    私有化部署的默认会员。你先试下web版看看是不是重构版的,pc端移动端都要用重构版去连接你私有化部署的地址。

    校验提示文案

    提交
    Web版登录试了,跟官方的不一样。
    安卓手机端登录,点设置-默认笔记模板,直接闪退。

    校验提示文案

    提交
    收起所有回复
  • 之前用的wiz,后面换joplin了,wiz总感觉要倒闭的样子

    校验提示文案

    提交
  • 不能离线的笔记本都没法入眼

    校验提示文案

    提交
  • 语雀笔记已经足够用了

    校验提示文案

    提交
  • 复制过来的图片保存不了,哎

    校验提示文案

    提交
  • 在NAS的怎么备份呢?

    校验提示文案

    提交
  • 我群晖7.0用反代开启https后,外网所有客户端的新建的笔记,互相客户端无法打开。只有标题。该回http就可以了,估计群晖的反代无法使用wss

    校验提示文案

    提交
  • ob ios上客户端也不好同步

    校验提示文案

    提交
  • 晕,为了这个不显示内容的问题,今天白天刚删了容器,又换回印象笔记了,这就发现解决办法了 [喜极而泣]

    校验提示文案

    提交
  • 好奇怪啊,我docker最新的镜像是1.0.26,不是1.0.27

    校验提示文案

    提交
    我去为知贴吧看了一下,很多人反映新版有上传附件限制,不能批量导出等问题,而且最近压根拉取不到最新版docker镜像。如果担心官方以后不再支持私有化部署的,还是用别的吧。

    校验提示文案

    提交
    请问你的1.0.26版本有没有附件版本限制,我想刷回老版本了。

    校验提示文案

    提交
    收起所有回复
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
目录
  • 群晖自带反向代理服务器配置

  • Nginx反向代理配置

  • 重构版为知笔记功能介绍

222
扫一下,分享更方便,购买更轻松