Hi 大家好呀!我叫 Ask Term 。这是我来少数派写的教程系列文章的第一篇,给大家带来一个开源知识库 Memos 的部署教程,小伙伴们也许会问 Memos 什么?那么我就把官方对 Memos 的定义引用一下:

An open source, self-hosted knowledge base that works with a SQLite db file.

如何还是不太清楚这个是干嘛用的,那么体验一下官方的 Demo,体验过的小伙伴一定会觉得这不就是 Flomo 吗?确实,这算是非官方 Flomo 的开源替代品,鉴于 Memos 的开源特性你可以随意的部署在自己的服务器上去使用。

Memos 的部署也很简单,一条 Docker 命令就能启动,但是对于不熟悉 Docker 的小伙伴或许还是有些难度的,为此我写了这篇入门级的教程,让小伙伴能够轻松完成 Memos 的部署。

Flomo 和 Memos 的功能对比

对比FlomoMemos
收费方式免费有限制开源自托管
API 接口Pro 版免费使用免费开放
每日回顾Pro 版支持支持
微信输入支持不支持

通过对比我认为 Memos 除了在微信输入上欠缺了一点,在其它方面是胜过 Flomo 的,虽然不能够原生的支持微信输入,但是 Memos 官方开放了 API 接口,通过这个接口去连接个人的微信服务号或许可以实现微信输入的功能,网上也有类似通过 Telegram 进行输入的教程。

 

🔞注意:本次的部署环境为: Ubuntu 22.04.1 LTS

Docker 的安装

附上 Docker 官方部署文档(如果需要更详细的安装流程,请参考官方文档)

如果已经存在旧版本的 Docker并且想要卸载请执行卸载命令(非必要)

sudo apt-get remove docker docker-engine docker.io containerd runc

设置存储库

更新 apt 包索引并安装包以允许apt通过 HTTPS 使用存储库:

sudo apt-get update

sudo apt-get install ca-certificates curl gnupg lsb-release

添加 Docker 的官方 GPG 密钥:

 sudo mkdir -p /etc/apt/keyrings

 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

使用以下命令设置存储库:

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

安装 Docker 引擎

更新 apt 包索引,安装最新版本的 Docker Engine、containerd 和 Docker Compose

sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

验证 Docker 运行情况

Active: active (running)running 时说明 Docker 运行正常

systemctl status docker.service

● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-10-14 13:28:11 CST; 42s ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 16345 (dockerd)
      Tasks: 8
     Memory: 21.7M
        CPU: 318ms
     CGroup: /system.slice/docker.service
             └─16345 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

当进行到这一步骤的时候说明你的 Docker 服务已经成功安装了,离 Memos 的成功安装已经很近了。下面在跟随我完成 Memos 的部署吧!

Memos 服务的部署

仓库地址: https://github.com/usememos/memos

创建存储卷

我们要先在服务器创建一个目录用来存储 Memos 数据。

root@localhost:~# mkdir memos

然后需要将创建的目录挂载到docker的容器里,我们先查看一下memos 的路径,下面启动 Memos 的时候需要指定此路径。

root@localhost:~/memos# pwd
/root/memos

运行容器

只需要一条命令就能够启动 Memos 容器:

root@localhost:~/memos# docker run -d --name memos -p 5230:5230 -v /root/memos/:/var/opt/memos neosmemo/memos:latest

这条命令的参数的意思是: 将容器内的 5230 端口映射到宿主机的 5230 端口上,同时将容器内 /var/opt/memos路径下的内容挂载到宿主机的 /root/memos 路径下,路径映射的好处是防止容器被误删导致数据丢失。

查看容器运行状态

root@localhost:~/memos# docker ps -a
CONTAINER ID   IMAGE                   COMMAND                  CREATED          STATUS          PORTS                                       NAMES
e257ff3e213b   neosmemo/memos:latest   "./memos --mode prod…"   50 seconds ago   Up 48 seconds   0.0.0.0:5230->5230/tcp, :::5230->5230/tcp   memos

当我们看到容器状态是 Up 的时候说明我们已经成功部署好了 Memos 服务,只需要在浏览器访问 127.0.0.1:5230 就可以开的 Memos 的初始页面了。

体验 Memos

初次次打开 Memos 时我们满怀好奇,此时需要我们提供邮箱和一个密码来生成管理员账号。

初始页面

有了管理员账号后就可以体验完整的 Memos 服务了,

首页

Memos 的数据存储在本地 /root/memos/路径下名为 memos_prod.db的文件,每次升级前请做好备份。

但是目前我们也只能通过内网访问该服务,如果我们没有公网 IP 又该如何实现可以 Memos 的公网访问呢?这就引出了一个技术——内网穿透,下一个教程就教大家两种常用的内网穿透方式,一个是花费 1 元就可以实现两条可用的隧道,另一个是通过购买云主机部署内网穿透服务来实现自定义更强的方案。

到此本教程就该结束了,本人笨嘴拙腮写不出情文并茂的句子,不足的地方还望见谅。