> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 公开访问

> 让访客、未登录用户和新用户访问 Kubernetes 部署。

访客访问共享项目、公开页面以及自助注册都通过 **web** 服务读取的环境变量来开启；之后 real-time 服务会通过访客的会话为其提供服务。每个开关所开放的内容请参见[公开访问](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/overleaf-toolkit/authentication/public-access.md)。

| | |
| - | - |
| 服务 | web（以及为编辑器中的访客提供服务的 real-time），位于每个 Ayakaleaf Pro Pod 中；在 web 启动时读取 |
| Pod → 外部 | SMTP 服务器，在注册发送激活邮件时访问 |
| 状态 | 会话中的访客访问令牌，Redis 中的注册速率限制 |
| 定期任务 | 无 |

### 配置

将你需要的开关添加到 ConfigMap `overleaf-env`：

```yaml title="30-config.yaml (additions)" theme={null}
  # Guests open link-shared projects without an account
  OVERLEAF_ALLOW_ANONYMOUS_READ_AND_WRITE_SHARING: "true"
  # Signed-out visitors may open /learn, /templates, /devs and view links
  OVERLEAF_ALLOW_PUBLIC_ACCESS: "true"
  # Self-registration: "true", or only some domains
  OVERLEAF_ALLOW_PUBLIC_REGISTRATION: "@example.com, @*.uni.example"
```

```bash theme={null}
kubectl apply -f 30-config.yaml
kubectl -n overleaf rollout restart deployment/overleaf     # or statefulset/overleaf
```

请为每个值加上引号。在 YAML 中，以 `@` 开头的值必须加引号，否则 `kubectl apply` 会拒绝该文件。

限定域名的注册会发送激活邮件，因此 Pod 必须能够正常进行[邮件发送](https://ayakaleaf-pro.mintlify.site/zh-CN/on-premises/configuration/kubernetes/email-delivery.md)：将 SMTP 主机放入 ConfigMap，并将 `OVERLEAF_EMAIL_SMTP_PASS` 放入 Secret。

### 多个副本

无需额外操作。访客对项目的访问权限保存在 Redis 中的会话里，因此无论负载均衡器选择哪个副本，编辑器都能正常工作。

### 在 Kubernetes 上的测试

在 Kubernetes 1.37 上，我们针对公开访问的端到端测试全部通过：在一个副本上，将 `OVERLEAF_ALLOW_PUBLIC_REGISTRATION` 分别设置为 `true`、单个域名、带子域名通配符的多个域名以及 `@*` 时的自助注册，以及域名模式下的激活邮件（43 个用例）；在设置 `OVERLEAF_ALLOW_PUBLIC_ACCESS` 时，未登录访客访问 `/devs`，以及提交的代码片段在登录后得以保留（2 个用例）；在两个开关都开启时，未登录访客进入通过链接共享的项目（3 个用例）；以及在位于 HAProxy 之后的三个副本上，OIDC 与公开访问同时使用（1 个用例）。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.