> ## 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.

# Sincronização com Gitea

> Permita que os usuários sincronizem seus projetos com repositórios no Gitea.com ou no seu próprio Gitea em uma implantação Kubernetes.

A sincronização com Gitea é executada no serviço **web** (o módulo `gitea-sync`) de cada pod do Ayakaleaf Pro. Ela precisa da [Integração com Git](https://ayakaleaf-pro.mintlify.site/pt/on-premises/configuration/kubernetes/integrations/git-integration.md). Crie o aplicativo OAuth e leia o que cada configuração faz em [Sincronização com Gitea](https://ayakaleaf-pro.mintlify.site/pt/on-premises/configuration/overleaf-toolkit/integrations/gitea-synchronisation.md); esta página a coloca no Kubernetes.

| | |
| - | - |
| Serviço | web (módulo `gitea-sync`), em cada pod do Ayakaleaf Pro; lido quando o web inicia |
| Pod → Gitea | a API REST de `GITEA_SYNC_URL` (padrão `https://gitea.com/api/v1`), sempre que um usuário vincula, importa, exporta ou sincroniza |
| Navegador → Gitea | `${GITEA_SYNC_URL}/login/oauth/authorize` para vincular uma conta e, depois, de volta para `${OVERLEAF_SITE_URL}/user/gitea-sync/oauth2/callback` |
| Gitea → Overleaf | nenhum: sem webhook, a instância não precisa estar acessível a partir do Gitea |
| Dados armazenados | os tokens de acesso e de atualização do Gitea do usuário, criptografados, no MongoDB |
| Tarefas periódicas | nenhuma: a sincronização acontece quando um usuário clica |

### Configuração

**1. ConfigMap**

```yaml title="30-config.yaml (additions)" theme={null}
  GITEA_SYNC_ENABLED: "true"
  GITEA_SYNC_CLIENT_ID: <client ID>
  # your own Gitea: its ROOT_URL
  # GITEA_SYNC_URL: https://gitea.example.com
  # optional: send the module's requests to Gitea through an HTTP proxy
  # GITEA_SYNC_PROXY_URL: http://proxy.example.com:3128
```

`GIT_BRIDGE_ENABLED: "true"` e o StatefulSet do git-bridge da [Integração com Git](https://ayakaleaf-pro.mintlify.site/pt/on-premises/configuration/kubernetes/integrations/git-integration.md) precisam estar configurados: sem eles, as configurações da conta e o editor ocultam a sincronização com Gitea.

**2. Secret**

```bash theme={null}
kubectl -n overleaf patch secret overleaf-secrets --type merge -p '{"stringData":{
  "GITEA_SYNC_CLIENT_SECRET":"<client secret>",
  "GITEA_TOKEN_CIPHER_PASSWORD":"'"$(openssl rand -hex 32)"'"}}'
```

`GITEA_TOKEN_CIPHER_PASSWORD` criptografa os tokens de acesso e de atualização do Gitea dos usuários no MongoDB. Todas as réplicas precisam usar o mesmo valor, e alterá-lo depois faz com que todos os usuários tenham de vincular o Gitea novamente.

**3. CA privada (opcional)**

Se o seu Gitea tem um certificado da sua própria CA, adicione a CA ao Secret `overleaf-certs`, montado em `/var/lib/overleaf/certs` (consulte [Certificados e outros arquivos](https://ayakaleaf-pro.mintlify.site/pt/on-premises/configuration/kubernetes#certificados-e-outros-arquivos)), e defina `NODE_EXTRA_CA_CERTS: /var/lib/overleaf/certs/ca.pem` no ConfigMap.

**4. Aplique, reinicie e verifique**

```bash theme={null}
kubectl apply -f 30-config.yaml
kubectl -n overleaf rollout restart deployment/overleaf     # or statefulset/overleaf
for p in $(kubectl -n overleaf get pod -l app=overleaf -o name); do   # app=overleaf-ha for several replicas
  kubectl -n overleaf exec "$p" -- curl -sS -o /dev/null -w "$p %{http_code}\n" https://gitea.com/api/v1/version
done
```

Qualquer status HTTP significa que o Gitea está acessível a partir desse pod; `000` significa que não está.

### Várias réplicas

Nada extra além da `GITEA_TOKEN_CIPHER_PASSWORD` compartilhada. Uma sincronização obtém um lock no Redis, compartilhado com as outras sincronizações Git, para que duas réplicas nunca sincronizem o mesmo projeto ao mesmo tempo.

### Testado no Kubernetes

Contra um Gitea 1.23 real em `GITEA_SYNC_URL`, no Kubernetes 1.37 com uma réplica e a integração com Git ativada, nossos testes de ponta a ponta para a sincronização com Gitea passam (39 casos): vinculação e desvinculação da conta por meio do OAuth2 do Gitea, atualização do token de acesso que expira e autorizações revogadas, exportação para um novo repositório privado ou de organização, importação de um repositório, pull e push, merges, conflitos, branches excluídos e com force-push, arquivos binários, renomeações e exclusões, e o que proprietários, editores e leitores podem fazer.


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