siyuan官网提供的都是桌面版的编译文件, 默认都是以GUI方式运行
而我希望在Termux中运行siyuan后端服务, 之后通过Web访问siyuan笔记, 再通过S3来同步数据, 这样我的移动服务器也能成为我的移动电子笔记本了
到siyuan官网看一眼: https://github.com/siyuan-note/siyuan
releases中已经提供了Linux ARM64程序包, 下载解压
仅运行后端程序, 只需要运行kernel即可, 但是kernel单独运行后会定时检测前端GUI进程是否存在, 若不存在则自动退出
bash
W 2026/03/16 09:11:18 process.go:66: no active UI proc, continue to check from attached ui processes after 15s
E 2026/03/16 09:11:21 rhy.go:66: get version info failed: Get "https://siyuan-sync.b3logfile.com/apis/siyuan/version?ver=3.6.0": tls: failed to verify certificate: x509: certificate signed by unknown authority
E 2026/03/16 09:11:21 updater.go:252: get announcement failed: Get "https://siyuan-sync.b3logfile.com/apis/siyuan/version?ver=3.6.0": tls: failed to verify certificate: x509: certificate signed by unknown authority
W 2026/03/16 09:11:33 process.go:72: no active UI proc, continue to check from all processes after 15s
W 2026/03/16 09:11:48 process.go:80: confirmed no active UI proc, exit kernel process now
I 2026/03/16 09:11:48 conf.go:742: exiting kernel [force=false, setCurrentWorkspace=true, execInstallPkg=1]
I 2026/03/16 09:11:48 database.go:1299: closed database
I 2026/03/16 09:11:48 conf.go:1197: cleared workspace temp
I 2026/03/16 09:11:48 sync.go:811: sync websocket closed
W 2026/03/16 09:11:48 process.go:66: no active UI proc, continue to check from attached ui processes after 15s
I 2026/03/16 09:11:49 conf.go:816: exited kernel
我们要让kernel保持在后台运行, 按照在docker容器中的方式即可, 需要设置一个环境变量: RUN_IN_CONTAINER
先看一下使用帮助
bash
# 解压tar.gz之后, 在siyuan目录的resources目录下运行命令才能正常运行, 否则需要通过-wd命令手动指定工作路径
cd siyuan/resources
./kernel/SiYuan-Kernel -h
Usage of ./kernel/SiYuan-Kernel:
-accessAuthCode string
access auth code
-lang string
ar_SA/de_DE/en_US/es_ES/fr_FR/he_IL/it_IT/ja_JP/ko_KR/pl_PL/pt_BR/ru_RU/sk_SK/tr_TR/zh_CHT/zh_CN
-mode string
dev/prod (default "prod")
-port string
port of the HTTP server (default "0")
-readonly string
read-only mode (default "false")
-ssl
for https and wss
-wd string
working directory of SiYuan (default "/data/data/com.termux/files/home/bin/siyuan/resources")
-workspace string
dir path of the workspace, default to ~/SiYuan/
通过--help可以看到运行内核支持的一些参数, 我们可以构建一个完整的运行命令, 如下
bash
cd siyuan/resources
RUN_IN_CONTAINER=1 ./kernel/SiYuan-Kernel -accessAuthCode "my-password" -lang "zh_CN"
先执行一下试试, 成功! 并且可以通过Web访问, 默认端口为6806, 我暂时不修改
现在将其服务化, 通过termux-services管理运行
-
创建服务目录
bashmkdir -p $PREFIX/var/service/siyuan -
编写
run启动脚本bashnano $PREFIX/var/service/siyuan/run内容如下, 配置内容依据实际情况填写
bash#!/data/data/com.termux/files/usr/bin/sh exec 2>&1 # 1. 切换到思源笔记的根目录(请替换为你自己的实际绝对路径!) cd /data/data/com.termux/files/home/bin/siyuan/resources # 2. 导出环境变量 export RUN_IN_CONTAINER=1 export SSL_CERT_FILE=$PREFIX/etc/tls/cert.pem # 3. 使用 exec 启动程序,这样 sv 才能正确捕获并管理该进程的 PID exec /data/data/com.termux/files/home/bin/siyuan/resources/kernel/SiYuan-Kernel -accessAuthCode "my-password" -lang "zh_CN" -wd "/data/data/com.termux/files/home/bin/siyuan/resources"赋予可执行权限
bashchmod +x $PREFIX/var/service/siyuan/run -
(可选) 配置日志服务
bashmkdir -p $PREFIX/var/service/siyuan/log mkdir -p $PREFIX/var/log/sv/siyuan nano $PREFIX/var/service/siyuan/log/run日志脚本
bash#!/data/data/com.termux/files/usr/bin/sh LOGDIR=$PREFIX/var/log/sv/siyuan mkdir -p $LOGDIR exec svlogd -tt $LOGDIR执行权限
bashchmod +x $PREFIX/var/service/siyuan/log/run
配置完成后就可以通过termux-service管理siyuan服务
bash
sv up siyuan
sv status siyuan
sv down siyuan
sv-enable siyuan
sv-disable siyuan
tail -f $PREFIX/var/log/siyuan/current
运行时提示"x509: certificate signed by unknown authority", 且siyuan账号无法登录, 排查发现是系统证书没找到, Go 语言原生支持通过环境变量 SSL_CERT_FILE 来指定证书路径
先测试运行一次
bash
export SSL_CERT_FILE=$PREFIX/etc/tls/cert.pem
cd siyuan/resources
./kernel/SiYuan-Kernel
# 没有再出现x509错误
让配置永久生效, 将export SSL_CERT_FILE=$PREFIX/etc/tls/cert.pem添加到之前的run脚本中, 再重启siyuan服务即可
登录siyuan账号也正常了, 数据同步可以用自建的S3服务(特性订阅), 也可以订阅官方的存储服务, 个人觉得siyuan笔记还是非常好用的, 特性订阅一次付费终身有效, 还是很不错的
配置完成后数据同步也正常, 配合之前的Easytier组网, 非常丝滑

我已经在自己的Nas上搭建了siyuan笔记并支持远程访问了, 为什么还要在Android服务器上再搭建一个呢?
有一次家里停电了, 在外需要访问笔记的我瞬间感觉少了半个脑子!
这样我就可以随身携带自己的电子笔记本, 即使数据断了也没关系, 在Android服务器上读/写都可以本地正常运行, 只需要等到网络恢复后同步一下数据就行