Appearance
使用 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.com 和 memos.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
}