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

# GitHub-synkronisering

> La brukere synkronisere prosjektene sine med GitHub- eller GitHub Enterprise-repositorier i en Kubernetes-distribusjon.

GitHub-synkronisering kjører i **web**-tjenesten (modulen `github-sync`) i hver Ayakaleaf Pro-pod. Den krever [Git-integrasjonen](https://ayakaleaf-pro.mintlify.site/no/on-premises/configuration/kubernetes/integrations/git-integration.md). Opprett OAuth-applikasjonen og les hva hver innstilling gjør i [GitHub-synkronisering](https://ayakaleaf-pro.mintlify.site/no/on-premises/configuration/overleaf-toolkit/integrations/github-synchronisation.md); denne siden overfører det til Kubernetes.

| | |
| - | - |
| Tjeneste | web (modulen `github-sync`), i hver Ayakaleaf Pro-pod; leses når web starter |
| Pod → GitHub | `https://api.github.com` (REST og GraphQL), eller API-et til `GITHUB_SYNC_URL`, hver gang en bruker kobler til, importerer, eksporterer eller synkroniserer |
| Nettleser → GitHub | `https://github.com/login/oauth/authorize` for å koble til en konto, deretter tilbake til `${OVERLEAF_SITE_URL}/user/github-sync/oauth2/callback` |
| GitHub → Overleaf | ingen: ingen webhook, instansen trenger ikke å være tilgjengelig fra GitHub |
| Lagrede data | brukerens GitHub-tilgangstokener, kryptert, i MongoDB |
| Periodiske jobber | ingen: synkronisering skjer når en bruker klikker |

### Konfigurasjon

**1. ConfigMap**

```yaml title="30-config.yaml (additions)" theme={null}
  GITHUB_SYNC_ENABLED: "true"
  GITHUB_SYNC_CLIENT_ID: <client ID>
  # GitHub Enterprise: its web address
  # GITHUB_SYNC_URL: https://github.example.com
  # optional: send the module's requests to GitHub through an HTTP proxy
  # GITHUB_SYNC_PROXY_URL: http://proxy.example.com:3128
```

`GIT_BRIDGE_ENABLED: "true"` og git-bridge-StatefulSet-en fra [Git-integrasjon](https://ayakaleaf-pro.mintlify.site/no/on-premises/configuration/kubernetes/integrations/git-integration.md) må være på plass: uten dem skjuler kontoinnstillingene og redigeringsprogrammet GitHub-synkronisering.

**2. Secret**

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

`GITHUB_TOKEN_CIPHER_PASSWORD` krypterer brukernes GitHub-tilgangstokener i MongoDB. Alle replikaer må bruke samme verdi, og hvis du endrer den senere, må alle brukere koble til GitHub på nytt.

**3. Privat CA (valgfritt)**

Hvis GitHub-instansen din har et sertifikat fra din egen CA, legger du CA-en til i Secret-en `overleaf-certs` som er montert på `/var/lib/overleaf/certs` (se [Sertifikater og andre filer](https://ayakaleaf-pro.mintlify.site/no/on-premises/configuration/kubernetes#sertifikater-og-andre-filer)) og angir `NODE_EXTRA_CA_CERTS: /var/lib/overleaf/certs/ca.pem` i ConfigMap-en.

**4. Bruk, start på nytt og kontroller**

```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://api.github.com
done
```

Enhver HTTP-statuskode betyr at GitHub kan nås fra den poden; `000` betyr at den ikke kan det.

### Flere replikaer

Ingenting ekstra utover den delte `GITHUB_TOKEN_CIPHER_PASSWORD`. En synkronisering tar en lås i Redis, delt med de andre Git-synkroniseringene, slik at to replikaer aldri synkroniserer det samme prosjektet samtidig.

### Testet på Kubernetes

Mot en etterligning av github.com og REST- og GraphQL-API-ene (klarert via `NODE_EXTRA_CA_CERTS` fra `overleaf-certs`), på Kubernetes 1.37 med én replika og Git-integrasjonen slått på, består ende-til-ende-testene våre for GitHub-synkronisering (31 tilfeller): tilkobling og frakobling av kontoen, tilbakekalte tokener, eksport av et prosjekt til et nytt privat repositorium eller organisasjonsrepositorium, import av et repositorium (også over opplastingsgrensen), pull og push, sammenslåinger, konflikter og manuelle sammenslåinger, slettede og tvangspushede grener, binærfiler, omdøpinger og slettinger, tap av push-tilgang, og hva eiere, redaktører og lesere har lov til å gjøre.


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