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

相关推荐
s_w.h5 分钟前
【 linux 】认识make和makefile
linux·运维·bash
不怕犯错,就怕不做16 分钟前
ARM设备异常断电容易造成数据损坏,硬件如何设计
linux·驱动开发·嵌入式硬件
哆哆啦ss18 分钟前
使用 Obsidian + GitHub Actions + GitHub Pages 搭建内容发布流
笔记
Harm灬小海20 分钟前
【云计算学习之路】学习Centos7系统-Linux软件包管理
linux·运维·服务器·学习·云计算·yum·rpm
1892280486122 分钟前
NY379固态MT29F32T08GSLBHL8-36QA:B
大数据·服务器·人工智能·科技·缓存
caicai_xiaobai23 分钟前
Ubuntu上Git安装步骤
linux·git·ubuntu
清平乐的技术专栏24 分钟前
【Kafka笔记】(四)Kafka 三种消费模式
笔记·分布式·kafka
new_dev26 分钟前
Python实现Android自动化打包工具:加固、签名、多渠道一键完成
android·python·自动化
小孔龙27 分钟前
Android `<activity-alias>` 指南:动态图标 · 多入口 · 重命名兼容
android·程序员·掘金·日新计划
LuminousCPP29 分钟前
数据结构 - 线性表第三篇:基于顺序表实现 C 语言通讯录(基础功能篇)
c语言·数据结构·经验分享·笔记·算法