前言

长话短说了。

Memos的开发者只提供了docker镜像这一种部署方式,而且从v0.15.0以后已经停止维护针对arm32/armhf/armv7l的版本。

我的系统是3.10内核的openwrt 21,因为内核太老所以不支持安装docker。

我的硬件是迅雷赚钱宝一代,硬件型号ws1408,芯片amlogic s805,内存228MB。

我用的memos后端是v0.15.2,是从github下载的,指路:【memospot/memos-builds】。

你可能会问为什么不用更高的版本,😂,有苦衷的。其一是因为前端部分需要自己编译,我只成功编译出了v0.15.0版本,更新的版本我本地编译都会报错,暂时没有精力去debug。其二是因为之前受arm32平台的限制,我一直用的是v0.15.0的docker镜像,而从v0.16开始的更新就涉及到数据库表结构的变更,没法平滑的升级,所以本次还是停留在v0.15这个大版本。

至于后端v0.15.2 + 前端v0.15.0这种奇怪的版本组合,😂,我用了一个周末,还没有发现什么bug,可以正常使用。

我自己编译的v0.15.0的前端项目的下载放在文章最后。

这种方式也适用于在其它linux版本上直接用编译好的二进制包运行memos,自行调整配置文件即可。


配置

先把v0.15.2的后端 + v0.15.0的前端上传到服务器,然后按照项目结构进行组织。后端文件memos不要忘记添加可执行权限,chmod +x memos

--memos
--server
    |
    --dist

我的项目结构如下图,其中data用来存放memos的数据。

接下去就是配置启动脚本以及一些bug处理。

第一步:sysv脚本

/etc/init.d目录下新建文件memos,记得添加可执行权限chmod +x memos,然后粘贴以下代码。其中的文件路径、端口号、数据存放目录请自行修改。

#!/bin/sh /etc/rc.common

START=99
STOP=10

SERVICE_WRITE_PID=1
SERVICE_USE_PID=1
SERVICE_DAEMONIZE=1

start() {
  service_start /mnt/data/memos/memos --mode=prod --port=5203 --data=/mnt/data/memos/data
}

stop() {
  kill $(pidof memos)
}

保存后退出,然后启动服务并设置开机启动。

# 启动服务
service memos start

# 添加启动项
service memos enable

注意这个脚本只设置了startstop两个命令,其它的restart之类都没有适配,有需求的话请自行添加代码。

第二步:设置缩略图目录

memos应该是硬编码了到/var/opt/memos/assets这个附件目录下索引图片来生成缩略图,但我们用二进制包运行memos的话,数据存放路径都会自定义设置,其次是openwrt系统下,/var目录是个临时目录,一重启就会清空数据,所以肯定要修正这个bug。

比如我的memos数据都存放在/mnt/data/memos/data目录下。

解决的方法是建立一个软连接,把附件目录指向我们自定义的附件目录。

# 新建目录
mkdir -p /var/opt/memos/

# 把硬编码的目录通过软链接指向我们自己的数据目录
ln -s /mnt/data/memos/data/assets/ /var/opt/memos/assets

但机器可能偶尔会重启,一重启整个/var目录会被清空,不可能每次重启都手动创建一遍目录 + 软连接,所以需要把这个操作添加到启动项。

把两条命令合并在一起

mkdir -p /var/opt/memos/ ; ln -s /mnt/data/memos/data/assets/ /var/opt/memos/assets

第三步:手动创建缩略图目录

在memos的数据目录下,还需要手动创建缩略图目录.thumbnail_cache,我测试下如果不手动创建这个目录,缩略图功能依然会报目录缺失的错误。😂

mkdir /mnt/data/memos/data/.thumbnail_cache

第四步:选择正确的时区

memos服务的时区是根据系统的时区来生成时间戳,所以记得确认下宿主系统的时区是不是设置正确。

比如我的宿主系统是openwrt,时区设置Asia/Shanghai,千万不要选错时区导致发布的笔记时间错乱。

好了,到这里所有的配置就完成了,可以不用docker就在各种宿主系统上运行memos惹。

🎉


下载

百度网盘链接:https://pan.baidu.com/s/1hOSZHQ_VfsEPYUxb64X72g

提取码:s6pg