在Termux中运行Siyuan笔记服务

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管理运行

  1. 创建服务目录

    bash 复制代码
    mkdir -p $PREFIX/var/service/siyuan
  2. 编写run启动脚本

    bash 复制代码
    nano $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"

    赋予可执行权限

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

    bash 复制代码
    mkdir -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

    执行权限

    bash 复制代码
    chmod +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服务器上读/写都可以本地正常运行, 只需要等到网络恢复后同步一下数据就行

相关推荐
哼?~2 小时前
Linux信号产生
linux
跃龙客2 小时前
C++写文件笔记
c++·笔记
Je1lyfish2 小时前
CMU15-445 (2026 Spring) Project#2 - B+ Tree
linux·数据结构·数据库·c++·sql·spring·oracle
赋创小助手2 小时前
AMD OpenClaw:本地 AI Agent 运行平台解析,RyzenClaw 与 RadeonClaw 两种架构方案意味着什么?
服务器·人工智能·深度学习·自然语言处理·架构·数据挖掘·openclaw
Jerryhut2 小时前
服务器BMC配置管理
运维·服务器
宵时待雨2 小时前
C++笔记归纳11:多态
开发语言·c++·笔记
乐大师3 小时前
Linux普通用户设置开机自启服务
linux·服务器·开机自启动
野犬寒鸦3 小时前
从零起步学习计算机操作系统:进程篇(基础知识夯实)
java·服务器·后端·学习·面试
业精于勤_荒于稀3 小时前
服务器配置
java·服务器·jvm