在Termux中运行Siyuan笔记服务

0 阅读4分钟

siyuan官网提供的都是桌面版的编译文件, 默认都是以GUI方式运行

而我希望在Termux中运行siyuan后端服务, 之后通过Web访问siyuan笔记, 再通过S3来同步数据, 这样我的移动服务器也能成为我的移动电子笔记本了

到siyuan官网看一眼: github.com/siyuan-note…

releases中已经提供了Linux ARM64程序包, 下载解压

仅运行后端程序, 只需要运行kernel即可, 但是kernel单独运行后会定时检测前端GUI进程是否存在, 若不存在则自动退出

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

先看一下使用帮助

# 解压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可以看到运行内核支持的一些参数, 我们可以构建一个完整的运行命令, 如下

cd siyuan/resources
RUN_IN_CONTAINER=1 ./kernel/SiYuan-Kernel -accessAuthCode "my-password" -lang "zh_CN"

先执行一下试试, 成功! 并且可以通过Web访问, 默认端口为6806, 我暂时不修改

现在将其服务化, 通过termux-services管理运行

  1. 创建服务目录

    mkdir -p $PREFIX/var/service/siyuan
    
  2. 编写run启动脚本

    nano $PREFIX/var/service/siyuan/run
    

    内容如下, 配置内容依据实际情况填写

    #!/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"
    

    赋予可执行权限

    chmod +x $PREFIX/var/service/siyuan/run
    
  3. (可选) 配置日志服务

    mkdir -p $PREFIX/var/service/siyuan/log
    mkdir -p $PREFIX/var/log/sv/siyuan
    nano $PREFIX/var/service/siyuan/log/run
    

    日志脚本

    #!/data/data/com.termux/files/usr/bin/sh
    LOGDIR=$PREFIX/var/log/sv/siyuan
    mkdir -p $LOGDIR
    exec svlogd -tt $LOGDIR
    

    执行权限

    chmod +x $PREFIX/var/service/siyuan/log/run
    

配置完成后就可以通过termux-service管理siyuan服务

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 来指定证书路径

先测试运行一次

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组网, 非常丝滑

image-20260316121940-16gzfgc.png

我已经在自己的Nas上搭建了siyuan笔记并支持远程访问了, 为什么还要在Android服务器上再搭建一个呢?

有一次家里停电了, 在外需要访问笔记的我瞬间感觉少了半个脑子!

这样我就可以随身携带自己的电子笔记本, 即使数据断了也没关系, 在Android服务器上读/写都可以本地正常运行, 只需要等到网络恢复后同步一下数据就行