跳转到内容

管理2026年10月19日阅读约需 3 分钟

配置

Mitra 完全通过环境变量来配置。没有需要挂载的配置文件:你在容器上设置变量,Mitra 启动时读取它们。所有变量都是可选的,没有设置的变量会使用下文列出的默认值。

使用 Docker Compose 时,变量写在 environment 块中:

services:
mitra:
image: ghcr.io/a11delavar/mitra:latest
environment:
MITRA_URL: 'https://mitra.example.com'
MITRA_NAME: 'Family Calendar'

如果你不想把密钥写进 compose 文件,用 .env 文件或 Docker secrets 也一样可以。修改会在 Mitra 下次启动时生效:

Terminal window
docker compose up -d

几乎什么都不用。Mitra 日历、CalDAV、Apple 日历、日历订阅、Notion 和 Tempo 都由用户自己在应用中添加。

只有两项需要你先到别处注册凭据:Google 日历(MITRA_GOOGLE_*)和登录(MITRA_OIDC_*)。

一旦要在你自己的电脑以外访问 Mitra,就应该把它放在 Caddy、Traefik 或 nginx 等反向代理后面,由代理来处理 HTTPS。Mitra 本身在容器内只使用普通的 HTTP。有些功能只能在 HTTPS 下使用:

  • 浏览器只允许在 https:// 地址(以及 http://localhost)上使用提醒和安装应用。
  • 登录的 Cookie 只有在 https:// 下才会被标记为安全,而且大多数身份提供方都要求使用 https:// 重定向地址。
  • Google 日历要求使用 https:// 重定向地址。

然后把 MITRA_URL 设为公开地址。

使用 Caddy 时,只需要这几行:

mitra.example.com {
reverse_proxy localhost:3000
}

使用 Traefik 时,在服务上添加标签,把请求路由到 Mitra:

services:
mitra:
image: ghcr.io/a11delavar/mitra:latest
restart: unless-stopped
volumes:
- ~/mitra:/app/data
labels:
- "traefik.enable=true"
- "traefik.http.routers.mitra.rule=Host(`mitra.example.com`)"
- "traefik.http.services.mitra.loadbalancer.server.port=3000"
environment:
MITRA_URL: 'https://mitra.example.com'

MITRA_URL 是用户在浏览器中输入、用来访问 Mitra 的地址,而不是容器的内部地址:

environment:
MITRA_URL: 'https://mitra.example.com'

Mitra 根据它生成 Google 日历和登录的回调地址;如果它以 https:// 开头,Mitra 还会把 Cookie 标记为安全。在 http://localhost 上试用 Mitra 时可以不设置。一旦 Mitra 有了正式地址,就应该设置它;要启用登录,则必须设置。

MITRA_NAME 会替换侧边栏和浏览器标签页中的“Mitra”:

environment:
MITRA_NAME: 'Family Calendar'

点击名称会打开关于对话框,其中显示你正在运行的版本和提交。安装后的应用仍使用“Mitra”这个名称和图标,因为它们在构建应用时就已确定。

变量默认值说明
MITRA_URL(未设置)用户访问 Mitra 的公开地址,比如 https://mitra.example.com。登录和 Google 日历的回调地址,以及 Cookie 是否安全,都取决于它。在 localhost 上试用时可选,使用登录时必填,使用 Google 日历或任何公开服务器时建议设置。
MITRA_NAME(Mitra,按每个人的语言显示)显示在侧边栏和浏览器标签页中的名称。安装后的应用仍叫“Mitra”。
MITRA_PORT3000服务器监听的端口。使用 Docker 时,请改为修改端口映射的主机端;只有当进程本身必须监听其他端口时才设置它。内置的健康检查会随之调整。
MITRA_LOG_LEVELinfoMitra 记录多少日志:error、warn、info、debug 或 trace。级别越往后,记录的内容越详细,每个级别都包含前面所有级别的内容。
MITRA_UPDATE_CHECK(开启)设为 off(或 false、0、no)可关闭更新检查。
MITRA_MCP(开启)设为 off(或 false、0、no)可关闭 AI 工具连接的地址。
变量默认值说明
MITRA_VAPID_SUBJECTmailto:mitra@localhost推送服务看到的、你的服务器发送提醒时的联系方式,通常是一个 mailto: 地址。Mitra 的用户看不到它。签名密钥会自动生成,所以不需要设置其他内容。
变量默认值说明
MITRA_PHOTON_URLhttps://photon.komoot.io地点字段背后的 Photon 地理编码服务。可以把它指向你自己的 Photon 实例,而不使用 komoot 的公共实例。
变量默认值说明
MITRA_FILE_MAX_SIZE25M一个人可以附加到条目的最大文件,以字节计,或带 k、M、G 后缀。设为 0 则关闭添加文件。
MITRA_FILE_QUOTA(未设置)每个人附加的文件总共可占用的空间,写法相同。不设置则没有限制。

两个都设置后,用户才能连接 Google 日历。只设置 ID 会导致 Mitra 无法启动。

变量默认值说明
MITRA_GOOGLE_CLIENT_ID(未设置)来自 Google Cloud 控制台的 OAuth 客户端 ID。
MITRA_GOOGLE_CLIENT_SECRET(未设置)OAuth 客户端密钥。设置了 MITRA_GOOGLE_CLIENT_ID 时必填。

设置 MITRA_OIDC_ISSUER 即可启用登录。如果缺少它所需的变量,Mitra 会拒绝启动。

变量默认值说明
MITRA_OIDC_ISSUER(未设置)你的 OIDC 提供方的颁发者(issuer)URL。需要同时设置 MITRA_OIDC_CLIENT_ID 和 MITRA_URL。
MITRA_OIDC_CLIENT_ID(未设置)在提供方处注册的客户端 ID。
MITRA_OIDC_CLIENT_SECRET(未设置)客户端密钥。公共客户端不需要设置;Mitra 始终使用 PKCE。
MITRA_OIDC_SCOPESopenid profile emailMitra 请求的权限范围(scope),以空格分隔。openid 是必需的;profile 和 email 让 Mitra 获取每个人的姓名和电子邮件地址。

这些变量不需要你在服务器上设置。它们由构建过程或镜像设置,或者用于 Mitra 本身的开发。

变量设置方说明
MITRA_VERSION构建构建进镜像的版本。
MITRA_COMMIT构建构建进镜像的提交。
MITRA_DEV开发开发 Mitra 时提供演示集成,其中包含一组示例日历。
NODE_ENV镜像在容器镜像中为 production。

一台启用了登录、Google 日历并使用自己地理编码服务的服务器:

services:
mitra:
image: ghcr.io/a11delavar/mitra:latest
restart: unless-stopped
ports:
- '3000:3000'
volumes:
- ~/mitra:/app/data
environment:
MITRA_URL: 'https://mitra.example.com'
MITRA_NAME: 'Family Calendar'
# Sign-in
MITRA_OIDC_ISSUER: 'https://auth.example.com'
MITRA_OIDC_CLIENT_ID: 'mitra'
MITRA_OIDC_CLIENT_SECRET: '…'
# Google Calendar
MITRA_GOOGLE_CLIENT_ID: '….apps.googleusercontent.com'
MITRA_GOOGLE_CLIENT_SECRET: '…'
# Your own geocoder
MITRA_PHOTON_URL: 'https://photon.internal.example.com'