Featured image of post 使用移动设备编写并预览博客文章

使用移动设备编写并预览博客文章

经常会有电脑不在身边但想写点什么打发时间的场景,但是因为富文本内容和扩展语法没法看到自己写了些什么、看上去怎么样…

在某天发现Obsidian是跨平台的之后,我突然悟了!为什么不能在手机上部署一个一模一样的环境呢?说干就干!

准备工作

安装Termux

Hugo作为一个headless cli是需要Linux环境运行的,Termux正好提供这样一个环境。如果你还没有安装的话可以尝试ZeroTermux,可以省去一些配置上的麻烦。

安装Obsidian

官网/下载

这里主要是需要一个能方便编辑markdown的编辑器,如果你有其他喜欢的大概也是可以用的

配置Obsidian

打开Obsidian,新建一个仓库,仓库位置选择Device storage在Document下新建一个文件夹,随后点击使用此文件夹

为Termux提供储存权限

打开Termux,安装完bootstrap后输入

1
termux-setup-storage

不出意外的话会有一个提示框,点击允许即可。尝试输入cd /sdcard/Documents,如果没有Permission denied的提示就完成啦。

将文档目录链接到home下

这一步是为了方便自己的,毕竟谁也不想每次打开都cd一次吧(笑)我们可以把博客目录链接到home,这样每次打开Termux都可以直接启动部署。

1
2
cd ~
ln -s /sdcard/Documents/yourblog

然后ls一下,看看有没有新的文件夹出现吧。

安装Hugo

因为Termux的软件源里本来就有hugo,所以这一步十分简单:

1
2
pkg update
pkg install hugo

需要注意的是,如果你使用了官方版本的Termux可能会出现在某些网络环境下载不下来的情况,可以自行搜索Termux更换镜像源 后继续操作。

安装Git并克隆项目

1
2
pkg install git
git clone heres.your/repo.git ~/yourblog

如果你忘记clone到刚刚链接的目录,就mv过去吧

启动Hugo服务

1
2
cd ~/yourblog
hugo server -D --noBuildLock

这里解释一下最后一个参数,hugo为了防止server和build同时进行或类似的竞态情况默认是有lock机制的。翻看源码发现使用的库是lockedfile,底层为syscall.Flock。这在大部分情况下都工作得很好,然而/sdcard下使用的是FUSE文件系统,不支持flock操作。

让Termux能够后台运行

现在,你已经可以回到Obsidian中编辑博客,随后在浏览器中预览了!但是如果你把Termux放到后台再打开localhost:1313,大概率会因为后台被冻结而失败。可以尝试以下方法:

  • 进入设置,找到耗电管理,把Termux的电池计划改为无限制/完全允许后台行为
  • 进入后台划卡页面,下拉Termux锁定
  • 进入权限管理,给Termux自启动权限
  • 在Termux中输入termux-wake-lock,然后给予后台留存的特殊权限

如果你不知道以上具体的操作,可以参考这里

Licensed under CC BY-NC-SA 4.0