如何在服务器上部署思源

本贴最后更新于 443 天前,其中的信息可能已经渤澥桑田

**需求:**希望在多个电脑和手机端记录笔记,做到实时同步。

**适用:**有一台可以部署服务的公网服务器。

思源笔记在 github 的说明中写到,docker 部署的思源不支持桌面端和手机端的客户端连接,只能在浏览器中使用。

但是熟悉思源笔记架构的应该知道,网页端和客户端用的都是一套代码,只需要让客户端连接远程服务器就可以了。

下面探索了如何在自己服务器上部署,并编译可以连接这个服务端的桌面端和手机端应用。

1 服务端修改

默认的服务端是在 docker 中部署的,不太符合我的需求,对其稍作更改。

1.1 服务端监听地址修改

服务器默认监听地址是 127.0.0.1,需要修改为 0.0.0.0;

或者需要用 nginx 等反向代理,反向代理配置需要配置 websocket /ws

修改方法,在工作空间数据目录 SiYuan/conf/conf.json 文件中改 system->networkServe : true

1.2 无连接自动退出

本来 kernel 是设计的随着前端启动/退出的,但是我们需要让他保持运行。

本身会检测如果处于容器中则保持运行,但是我们部署没有用到容器,因此修改下面的代码:

process.go HookDesktopUIProcJob​(){return}直接返回

1.3 无界面,需要修改默认编译参数

go build --tags fts5 -v -o "../app/kernel/SiYuan-Kernel.exe" -ldflags "-s -w -H=windowsgui" .

去掉-H=windowsgui

2 客户端修改

2.1 跳过启动本地 kernel

原本启动的时候,是会先启动 kernel 做为本地服务程序,这里我们修改代码,使跳过这个步骤

2.1.1 桌面端

app/electron/main.js

注释掉调用 initKernel​的代码,直接 boot()

增加代码 firstOpen = false;​否则启动客户端会让选择工作空间,但是我们已经没有本地工作空间了

2.1.2 移动端

MainActivity

注释掉 Mobile 模块的引用,相关的代码

还要注释掉对 kernel 的依赖 implementation(name: 'kernel', ext: 'aar')

2.2 修改连接地址,连接远端服务

基本上是全局替换 127.0.0.1==> 服务器地址

3 编译

image

3.1 编译前端

npm run build:app
npm run build:mobile
npm run build:desktop
npm run build:export

编译结果在同级目录里的四个文件夹

image

3.2 编译 kernel

在 scripts/win-build.bat 有脚本自己看

编译的结果 kernel.exe 加前端的四个文件夹部署在服务器运行

3.3 打包桌面端

npm run dist

3.4 打包安卓端

需要下载 siyuan-android-main 工程

需要 android-studio,

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    22258 引用 • 88962 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 大佬,这个方法适用于在极空间 NAS 里面使用吗?

    1 回复
  • 其他回帖
  • wangxue

    1、服务器上没有更多空间安装 docker 了;做为服务本身没啥大区别;2、主要是解决了可以客户端连接服务端的问题,这样就可以多端共享,实时同步,不用什么 S3 服务了

  • 没位置装 docker 那确实没办法,主要是你的做法看上去功能与 docker 差不多,而且限制也一样:断网就寄,还用装客户端,折腾不小。

    不过有一点是很香的,你这个做法还能使用 pandoc。

  • Jason365

    比较好的方案是客户端能够支持自托管,希望后续有这个功能。

  • 查看全部回帖