Skip to content

使用 HTTPS

这篇文档将介绍如何使用反向代理服务通过 HTTPS/TLS 来保护 Memos。本文档中使用 Caddy,同样你也可以使用 Traefik, Nginx, Apache, HAProxy 或是其它的反向代理服务。

为什么要加密?

如果你在一个公网可以访问的服务器上安装了 Memos,确保每一个连接都是安全的则至关重要。否则,你的密码和笔记将以明文传输,任何人都可以将其捕获。

使用安全的连接还可以消除使用 HTTP 连接时出现的 Memos 的警告。

使用 Caddy 反向代理

Caddy 是一个高性能、易用、开源的 web 服务器和反向代理,具有自动 TLS 证书的功能,非常适合用来保护 Memos。

重要

如果你在使用 Caddy 时遇到问题,因为它是一个第三方软件,我们建议你向 Caddy 社区寻求帮助。

下面是一个一体化的 docker-compose.yml,使用 Caddy 启动 Memos。

特性:

  • 一个 Caddyfile 注入到 Caddy 容器中。
  • Memos 的 5230 端口不允许公共访问。
  • Caddy 公开 80 和 443 端口的访问。
  • Caddy 为 Memos 启用 gzip 和 zstd 压缩。
  • Caddy 将访问记录写入文件,每 10MB 进行滚动存储,始终保持存储最新的 20 个文件,7天后自动删除旧文件。
  • Caddy 对 memos.your-domain.commemos.your-domain.net 反向代理到 Memos 的容器,修改对应的入口来变更为你自己的域名。
  • Caddy 和 Memos 的数据对应保存在 ~/.caddy~/.memos

docker-compose.yml

yaml
services:
  memos:
    image: neosmemo/memos:stable
    container_name: memos
    restart: unless-stopped
    expose: [5230/tcp]
    volumes:
      - ~/.memos:/var/opt/memos

  caddy:
    image: caddy:2.8
    container_name: caddy
    restart: unless-stopped
    ports:
      - 0.0.0.0:80:80/tcp
      - 0.0.0.0:443:443
    configs:
      - source: Caddyfile
        target: /etc/caddy/Caddyfile
    volumes:
      - ~/.caddy/data:/data
      - ~/.caddy/config:/config
      - ~/.caddy/logs:/logs

configs:
  Caddyfile:
    content: |
      memos.your-domain.com, memos.your-domain.net {
        reverse_proxy memos:5230
        log {
          format console
          output file /logs/memos.log {
            roll_size 10mb
            roll_keep 20
            roll_keep_for 7d
          }
        }
        encode {
          zstd
          gzip
          minimum_length 1024
        }
      }

重要

如果你使用一个本地的域名,则需要修改 hosts 文件或者配置本地 DNS 服务,同时必须向 Caddyfile 添加另一个条目。注意缩进!

yaml
localhost, memos.local {
    tls internal
    reverse_proxy memos:5230
}

最后更新于: