Ayakaleaf Pro 可靠且安全吗?
Ayakaleaf Pro 是一个自托管的 Overleaf Pro 增强版本,我们的源代码可在 ayaka-notes/ayakaleaf-pro 获取。你的部署决定了服务在哪里运行、数据存放在哪里。 安全性取决于你的配置和运维。请保护好管理员访问权限、启用 HTTPS 并做好备份。 感谢 OpenAI 的大力支持。我们会定期使用 Codex Security 扫描代码仓库中的安全问题,并公开分享漏洞修复的结果。我的数据会去哪里?
默认情况下,应用数据保留在你的部署内部:- MongoDB 存储用户和项目数据。
- Redis 存储缓存和实时协作数据。
- 本地卷或兼容 S3 的存储保存项目文件。
我的数据会被发送给第三方或从第三方获取吗?
除非你启用了需要外部通信的功能,否则任何数据都不会离开你的部署。Ayakaleaf Pro 不发送任何遥测数据、使用分析或崩溃报告。在默认配置中,错误报告和分析均已禁用。 有几项功能完全不会发出外部请求。模板存储在你自己的部署中并由其提供。Python 脚本运行器通过 WebAssembly 在用户的浏览器中执行,其运行时由你自己的 Web 服务提供,而非公共 CDN,因此脚本代码和输出永远不会进入网络。Git Bridge 只能通过内部 Docker 网络访问。全项目搜索、符号面板、修订追踪、项目历史和管理面板完全在本地运行。沙盒编译容器在创建时已禁用网络。 其余功能的请求会发往以下目的地。每个请求都由 Web 服务发起:AI 助手与搜索
AI 助手与搜索
AI 功能默认处于禁用状态。启用后,聊天和 LaTeX 错误建议会将提示词及相关项目上下文发送到通过
AI_BASE_URL 配置的模型端点。可选的网页搜索会将查询发送到所配置的 Tavily 兼容服务,文档搜索则会将查询发送到 DOCS_MCP_URL(默认:https://docs.overleaf.com/~gitbook/mcp)。搜索结果可能会被包含在发送给模型提供商的请求中。有关配置和用户控制,请参阅 AI 集成。GitHub 集成
GitHub 集成
GitHub 集成会访问
github.com 和 api.github.com。它按用户启用,需要关联 GitHub 账户,授权时会请求 read:org、repo 和 workflow 权限范围。推送时会将完整的项目文件内容作为 Git blob 上传,随后组装成 tree 和 commit。它还会执行分支、引用、比较和合并操作,并读取所关联账户的个人资料、组织成员身份和仓库列表。项目内容会双向离开你的部署——请将已关联的 GitHub 账户视为与其关联的每个项目的导出通道。Zotero 集成
Zotero 集成
Zotero 集成会访问
www.zotero.org 进行授权,并访问 api.zotero.org 获取文献库数据。它按用户启用,需要关联 Zotero 账户。会发送 OAuth 握手信息和用户的 API 密钥。读取是单向的:参考文献库以 BibTeX 形式拉取,不会上传任何项目内容。Mendeley 集成
Mendeley 集成
Mendeley 集成会访问
api.mendeley.com 进行授权和获取文献库数据。它按用户启用,需要关联 Mendeley 账户。OAuth 握手会请求 Mendeley 的 all 权限范围——这是其 API 提供的唯一权限范围——但 Ayakaleaf 只执行读取操作:参考文献库和群组文献库以 BibTeX 形式拉取,不会上传任何项目内容。访问令牌会自动刷新;当 Mendeley 撤销授权时,存储的凭据会被丢弃,并提示用户重新关联账户。文档页面
文档页面
文档页面从
https://learnwiki.overleaf.com 获取,可通过 WIKI_URL 进行配置。请求由 Web 服务发出,而非用户的浏览器,因此上游 wiki 只能看到你的服务器,永远看不到用户的地址。请求中只发送所请求页面的标题,响应会缓存在磁盘上。如果不能接受对外的文档流量,请将 WIKI_URL 指向你自己的镜像,或屏蔽该目的地。邮件发送
邮件发送
邮件发送会访问你所配置的 SMTP 服务器或邮件 API;没有默认值。收件人地址和邮件内容(包括密码重置和邀请链接)会离开你的部署。
两项可选检查(PWD/reCAPTCHA)
两项可选检查(PWD/reCAPTCHA)
两项可选检查默认处于禁用状态。 除非设置了
HAVE_I_BEEN_PWNED_ENABLED,否则泄露密码检查不会生效;启用后,它会将密码 SHA-1 哈希值的前几个字符发送到 api.pwnedpasswords.com,绝不会发送密码本身。除非配置了 reCAPTCHA 站点密钥,否则 CAPTCHA 验证不会生效;启用后会访问 www.google.com。单点登录(OAuth/LDAP/SAML)
单点登录(OAuth/LDAP/SAML)
单点登录只会访问你提供的身份提供商,传输的内容取决于所用协议。使用 LDAP 时,Web 服务直接连接你的目录服务:它使用你配置的服务账户进行绑定,在你定义的 base、过滤器和属性列表范围内进行搜索,并根据你的目录验证登录表单中输入的密码,因此用户名和密码会到达目录服务器。启用基于目录的联系人功能会额外触发一次搜索以填充联系人列表。使用 OIDC 时,Web 服务会在你的令牌端点交换授权码,然后调用你的用户信息端点,默认请求
openid profile email 权限范围;可通过 OVERLEAF_OIDC_SCOPE 进行配置。使用 SAML 时,认证请求会通过用户的浏览器传递到身份提供商,而不是通过服务器直连。在这三种情况下,用户的姓名和邮箱地址都是从提供商处获取的,而非发送给提供商,之后会存储在本地用户记录中。第三方凭据
第三方凭据
第三方凭据——OAuth 令牌和 API 密钥——存储在 MongoDB 的用户记录中,使用 AES-256-CTR 加密,每条记录使用独立的盐值和初始化向量。它们绝不会以明文存储,也绝不会写入日志。如果设置了
${PROVIDER}_CIPHER_PASSWORD(例如 Zotero 和 Mendeley),加密密钥将取自该变量;否则会在首次使用时生成一个密钥,并以仅所有者可访问的权限持久化保存在你的数据卷中。请将该密钥与数据卷一起备份:一旦丢失,存储的凭据将无法解密,所有用户都必须重新关联账户。通过 URL 链接的文件
通过 URL 链接的文件
通过 URL 链接的文件由你的部署代表用户获取,因此目的地是用户提供的任意地址。除非你将
url 添加到 ENABLED_LINKED_FILE_TYPES 中,否则 URL 链接文件功能处于禁用状态,默认配置中不包含该项。通过 Open in Overleaf API 进行的外部 ZIP 和 TeX 导入也使用同一个 linked-url-proxy 组件。直接请求会解析目标主机名并拒绝受限的网络范围,但受所配置的允许资源例外规则约束。配置了 OVERLEAF_LINKED_URL_OUTBOUND_PROXY 后,主机名由出站代理解析,因此代理本身必须实施内网访问限制;应用层的网络检查仅适用于包含 IP 地址的 URL。详情请参阅外部 URL — 出站代理。这些请求只是获取所提供的 URL,而不会上传项目文件。github.com 和 api.github.com,Zotero 需要 www.zotero.org 和 api.zotero.org,Mendeley 需要 api.mendeley.com,文档需要 learnwiki.overleaf.com 或你自己的 WIKI_URL,密码检查需要 api.pwnedpasswords.com,CAPTCHA 需要 www.google.com,此外还有你自己的邮件服务器和身份提供商。如果启用了 AI 功能或搜索,还需放行所配置的模型、网页搜索和文档 MCP 端点。拒绝所有已启用功能不需要的目的地。如果出站流量必须集中检查或记录,可以通过设置 GITHUB_SYNC_PROXY_URL、MENDELEY_PROXY_URL 和 ZOTERO_PROXY_URL,分别让 GitHub、Zotero 和 Mendeley 集成经由 HTTP 代理。URL 链接文件获取和远程导入可以使用 OVERLEAF_LINKED_URL_OUTBOUND_PROXY。通过 URL 链接的文件无法限制在某个主机列表内,因为目的地是由用户在请求时选择的;请通过代理组件自身的允许资源设置来限制该功能,或保持其禁用状态。
项目编译是隔离的吗?
Ayakaleaf Pro 支持沙盒编译。每次编译都在单独的容器中运行。沙盒容器默认没有网络访问权限,这减少了对内部网络资源的暴露。 沙盒编译需要访问宿主机的 Docker 套接字。请将主机管理权限限制给受信任的运维人员。我可以信任 CI 构建和容器镜像吗?
Ayakaleaf Pro 的容器镜像由 GitHub Actions 构建和发布。镜像可从公开的 GitHub Container Registry 获取。 镜像支持amd64 和 arm64。拉取镜像时,Docker 会自动选择匹配的架构。
不要在生产环境中使用 latest 标签。请固定明确的版本,最好使用镜像摘要(digest)。
在非生产环境中测试每一次升级。在正式上线前,验证镜像、配置和集成。
代码是开源的吗?
Ayakaleaf Pro 及相关功能仓库均已公开。这使用户能够审查变更并追溯上游来源。 公开的源代码便于独立审查,但其本身并不能保证发布构建是可复现的。 升级之前,请检查:- 发布标签或提交。
- 镜像版本或摘要。
- 第三方依赖项及许可证要求。

