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

相关推荐
一隅论数智3 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
未济3 天前
linux 配置环境变量
linux
傲世仙尊3 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
千里马学框架3 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
虎头金猫3 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
美狐美颜SDK开放平台3 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
AFinalStone3 天前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
致远ccc3 天前
Google Play 上架前如何测试 App?多国家 Android 环境测试
android·app测试·googleplay·多国家应用测试
_艾伦 耶格尔.3 天前
进程间通信
linux
深圳老胡3 天前
STM32F407 控制 L6470 步进电机驱动 —— 控制过程简介
笔记·stm32·单片机·嵌入式硬件·代码规范