Memos 搭建
Memos 搭建
依然是从拾月那里得到的灵感, 拾月微博, Memos是一个数据都属于自己的开源备忘录平台, 之前因为需要从Docker安装, 对此一窍不通暂时搁置, 这次就先从Docker入手.
Docker
ChatGPT
Docker是一个容器平台,让开发者能够轻松地打包、交付和运行应用程序。这些容器是轻量级的、可移植的虚拟化解决方案,它们提供了一个隔离的环境,其中应用程序可以在任何地方以相同的方式运行,无论是开发机、测试环境还是生产环境。
容器(Container)是 Docker 中最基本的单位。它是一个独立、轻量级、可执行的软件包,包含了应用程序及其所有运行时需要的依赖项,如代码、运行时、系统工具、系统库等。容器化技术使得应用程序能够在相同的容器中在不同的环境中运行。
粗略看了一些视频教程, 简单的可以把Docker理解为把安装好的程序文件直接打包, 其中包含运行环境文件, 可以在任何场景下独立运行, 省去多次配置的麻烦.
对于Docker的多种命令及其逻辑关系, 黑马这幅图说得很明白:
Windows平台安装
在Install Docker Desktop on Windows下载Window桌面应用, 安装成功后直接在命令提示符中运行
docker run -d --name memos -p 5230:5230 -v ~/.memos/:/var/opt/memos neosmemo/memos:latest
安装后可以在本地的 http://<local_ip>:5230
上运行, 把<local_ip>
替换为自己电脑的本地IPV4地址即可, 或者直接输入localhost:5230
也可以.
当然, 为了防止访问被拒绝, 可以去防火墙里面设置把5230
的端口打开. 这样就可以在电脑开着的时候在运行服务. 中途电脑死机重启后又无法访问, 应该是需要手动启动Docker服务, 不过本来目标就是部署在云服务器上的, 本地的这些设置就不多做探究了.
云服务器部署
这部分主要参考【好玩儿的Docker项目】10分钟搭建一个碎片化知识卡片管理工具——Memos
- 宝塔平台直接点击左侧Docker, 就可以安装Docker, 非常方便.
依然在终端运行这段代码:
docker run -d --name memos -p 5230:5230 -v ~/.memos/:/var/opt/memos neosmemo/memos:latest
- 在云服务器的控制台里把
5230
端口打开, 这样用自己的http://公网ip:5230
即可访问.
通过IP端口访问还是不够优雅, 而自己的域名ambre.top
既然已经与公网IP完成解析, 何不进一步再把这个域名利用起来呢, 这时也发现拾月的域名也是 memos.skyue.com 这种形式, 文章里解释这种操作需要添加反向代理
. 这样其实也更新了自己的观念, 即一个域名可以通过这种设置, 在前面自由添加内容, 实现多种服务.
参考文章中重点介绍了利用Nginx Proxy Manager
来设置反向代理, 但我为了方便还是继续用了宝塔面板来设置.
- 新建站点: memos.ambre.top, 并在云服务器控制台的域名解析页面, 再添加一条
*.ambre.top
, 可以再域名前添加任何内容; 打开新建网站的配置文件, 按照参考文章中注释掉相应内容后, 再添加以下代码:
location / { proxy_pass http://127.0.0.1:5230/; rewrite ^/(.*)$ /$1 break; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade-Insecure-Requests 1; proxy_set_header X-Forwarded-Proto https; }
其中
http://127.0.0.1:5230/
需要调整, 按照以下命令来确认.ip addr show docker0
- 与之前一样设置SSL和Https, 即可通过 memos.ambre.top 来访问memos服务.
Memos使用
界面上基本承袭自Flomo
, 但因为开源可以玩的花样更多一点, 目前我把界面字体改成霞鹜文楷, 背景从Bing获取.
手机端有Moe memos
, 我多次用IP地址访问未果, 上述设置完成后直接用域名访问
其他使用中值得一提的点有:
- 部分支持Markdown格式, 图片直接用markdown格式即可直接加载, 那就不用再占用本地空间了.
- 可以添加代码块, 勾选框,
但奇怪的是我在Web端无法直接勾选, 已反馈. - 标签可以实现Flomo中多层效果, 四到五层都可以, 但是删掉博文后标签还是存在, 从手机客户端删除比较方便
- 这里介绍了memos支持的特殊格式, 甚至支持
LaTex
!
Memos更新
上面提到的勾选框无法直接勾选的Bug很快被开发者修正, 我也想马上修正, 一开始尝试按照最新的commit直接找到文件修改代码, 幸亏一开始没有找到文件位置才停止这种做法, 其实并不需要这样, 更不需要等待开发者发布下一个正式版本, 而是直接重新拉取最新版本即可. 当然重要的是把之前的数据做好备份. 我的步骤如下:
暂停memos程序
docker stop memos
- 备份数据
暂停memos后, 相应目录下会只有正式数据文件memos_prod.db
, 我的文件位置为/root/data/docker_data/memos/.memos
, 由于不熟悉Linux命令, 我直接在宝塔面板里把这个文件剪切到别的位置. 移除旧版本的memos
docker rm memos
拉取最新镜像
docker pull neosmemo/memos:latest
运行最新镜像
docker run -it -d \ --name memos \ --publish 5230:5230 \ --volume /root/data/docker_data/memos/.memos/:/var/opt/memos \ neosmemo/memos:latest \ --mode prod \ --port 5230
把之前的备份文件覆盖掉新形成的数据文件, 并且启动服务
docker start memos
这样就完成了更新, 目前勾选框也可以征程直接勾选. 今后Typecho要更新的时候也要注意备份的问题, 搞清楚数据主要在那些文件中.