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

> Ermöglichen Sie Benutzern, ihre Projekte in einem Kubernetes-Deployment mit Repositorys auf GitHub oder GitHub Enterprise zu synchronisieren.

Die GitHub-Synchronisierung läuft im **web**-Dienst (dem Modul `github-sync`) jedes Ayakaleaf Pro-Pods. Sie benötigt die [Git-Integration](https://ayakaleaf-pro.mintlify.site/de/on-premises/configuration/kubernetes/integrations/git-integration.md). Wie Sie die OAuth-Anwendung erstellen und was die einzelnen Einstellungen bewirken, lesen Sie unter [GitHub-Synchronisierung](https://ayakaleaf-pro.mintlify.site/de/on-premises/configuration/overleaf-toolkit/integrations/github-synchronisation.md); diese Seite überträgt das auf Kubernetes.

| | |
| - | - |
| Dienst | web (Modul `github-sync`), in jedem Ayakaleaf Pro-Pod; wird beim Start von web gelesen |
| Pod → GitHub | `https://api.github.com` (REST und GraphQL) bzw. die API von `GITHUB_SYNC_URL`, sobald ein Benutzer verknüpft, importiert, exportiert oder synchronisiert |
| Browser → GitHub | `https://github.com/login/oauth/authorize` zum Verknüpfen eines Kontos, danach zurück zu `${OVERLEAF_SITE_URL}/user/github-sync/oauth2/callback` |
| GitHub → Overleaf | keine: kein Webhook, die Instanz muss von GitHub aus nicht erreichbar sein |
| Gespeicherte Daten | die GitHub-Zugriffstoken der Benutzer, verschlüsselt, in MongoDB |
| Periodische Jobs | keine: synchronisiert wird, wenn ein Benutzer klickt |

### Konfiguration

**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"` und das git-bridge-StatefulSet aus der [Git-Integration](https://ayakaleaf-pro.mintlify.site/de/on-premises/configuration/kubernetes/integrations/git-integration.md) müssen vorhanden sein: Ohne sie blenden die Kontoeinstellungen und der Editor die GitHub-Synchronisierung aus.

**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` verschlüsselt die GitHub-Zugriffstoken der Benutzer in MongoDB. Jedes Replikat muss denselben Wert verwenden, und eine spätere Änderung zwingt alle Benutzer, GitHub erneut zu verknüpfen.

**3. Private CA (optional)**

Wenn Ihr GitHub ein Zertifikat Ihrer eigenen CA verwendet, fügen Sie die CA dem Secret `overleaf-certs` hinzu, das unter `/var/lib/overleaf/certs` eingebunden ist (siehe [Zertifikate und andere Dateien](https://ayakaleaf-pro.mintlify.site/de/on-premises/configuration/kubernetes#zertifikate-und-andere-dateien)), und setzen Sie `NODE_EXTRA_CA_CERTS: /var/lib/overleaf/certs/ca.pem` in der ConfigMap.

**4. Anwenden, neu starten und prüfen**

```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
```

Jeder HTTP-Status bedeutet, dass GitHub von diesem Pod aus erreichbar ist; `000` bedeutet, dass es nicht erreichbar ist.

### Mehrere Replikate

Außer dem gemeinsamen `GITHUB_TOKEN_CIPHER_PASSWORD` ist nichts weiter nötig. Eine Synchronisierung setzt eine Sperre in Redis, die mit den anderen Git-Synchronisierungen geteilt wird, sodass zwei Replikate nie gleichzeitig dasselbe Projekt synchronisieren.

### Auf Kubernetes getestet

Gegen einen Mock von github.com und seinen REST- und GraphQL-APIs (vertraut über `NODE_EXTRA_CA_CERTS` aus `overleaf-certs`) bestehen auf Kubernetes 1.37 mit einem Replikat und aktivierter Git-Integration unsere End-to-End-Tests für die GitHub-Synchronisierung (31 Fälle): Verknüpfen und Trennen des Kontos, widerrufene Token, Export eines Projekts in ein neues privates oder Organisations-Repository, Import eines Repositorys (auch über dem Upload-Limit), Pull und Push, Merges, Konflikte und manuelle Merges, gelöschte und per Force-Push überschriebene Branches, Binärdateien, Umbenennungen und Löschungen, Verlust der Push-Berechtigung sowie die Befugnisse von Besitzern, Bearbeitern und Betrachtern.


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