背景

一直觉得博客不适合记录一些太碎片化的内容,例如一些心情记录、一些只言片语。但是生活中总该有一些内容是想记录下来,但是又不太能放在博客里的。于是,Memos 这一款程序进入了我的视野。

Memos 是什么?

望文生义,Memos 直译过来便是“备忘录/便签”的意思,适合用来记录一些琐碎的内容。同时它是一款开源的程序,可以运用 Docker 部署,掌控自己的数据。另外,作为经典的由程序员开发的程序,Markdown 语法是必不可少的。总而言之,这是一款简单、轻便的程序,可以供我们记录只言片语。

部署程序

首先安装 Docker,使用如下命令安装:

curl -fsSL https://get.docker.com -o get-docker.sh
sh ./get-docker.sh

等待安装过程结束后,输入如下命令部署:

docker run -d --name memos -p 5230:5230 -v /data/memos/:/var/opt/memos --restart=unless-stopped neosmemo/memos:latest

或者使用 docker compose 部署:

version: "3.0"
services:
  memos:
    image: neosmemo/memos:latest
    container_name: memos
    volumes:
      - ./:/var/opt/memos
    ports:
      - 5230:5230
    restart: unless-stopped

关键部分解释:

  • -v /data/memos:/var/opt/memos 映射容器目录到主机,格式为“主机:容器”
  • -p 5230:5230 暴露端口,格式为“主机:容器”
  • --restart=unless-stopped 重启策略为“除非手动停止”

然后就可以通过 http://ip:5230 进行访问了。

Nginx 反向代理

通常我们希望是通过一个域名进行访问,而不是通过一串IP和端口号。我们接下来配置 Nginx 反向代理。

首先我们需要服务器上安装有 Nginx 程序,我这里已经配置好了环境,故而跳过安装 Nginx 这一步。请寻找自己服务器上存放 Nginx 配置文件的目录,新建配置文件,输入如下反向代理配置:

server {
    listen 443 ssl;
    server_name [你的域名];
 
    ssl_certificate      [SSL证书文件路径];
    ssl_certificate_key  [SSL密钥文件路径];
 
    ssl_prefer_server_ciphers on;
    ssl_session_timeout 1d;
    ssl_session_tickets off;
 
    # intermediate configuration. tweak to your needs.
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
 
    location / {
      proxy_pass http://127.0.0.1:5230;#如果你映射了其他端口,请修改
      proxy_set_header Host $host;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection upgrade;
      proxy_set_header Accept-Encoding "";
    }
}

接着重启 Nginx 服务器:

systemctl restart nginx

然后通过域名访问即可,最后附上我搭建的 Memos