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

# GitLab-synchronisatie

> Laat gebruikers hun projecten synchroniseren met repository's op GitLab.com of een zelfbeheerde GitLab in een Kubernetes-deployment.

GitLab-synchronisatie draait in de **web**-service (de module `gitlab-sync`) van elke Ayakaleaf Pro-pod. Ze vereist de [Git-integratie](https://ayakaleaf-pro.mintlify.site/nl/on-premises/configuration/kubernetes/integrations/git-integration.md). Maak de OAuth-applicatie aan en lees wat elke instelling doet in [GitLab-synchronisatie](https://ayakaleaf-pro.mintlify.site/nl/on-premises/configuration/overleaf-toolkit/integrations/gitlab-synchronisation.md); deze pagina zet het om naar Kubernetes.

| | |
| - | - |
| Service | web (module `gitlab-sync`), in elke Ayakaleaf Pro-pod; ingelezen wanneer web start |
| Pod → GitLab | de REST API van `GITLAB_SYNC_URL` (standaard `https://gitlab.com/api/v4`), telkens wanneer een gebruiker koppelt, importeert, exporteert of synchroniseert |
| Browser → GitLab | `${GITLAB_SYNC_URL}/oauth/authorize` om een account te koppelen, daarna terug naar `${OVERLEAF_SITE_URL}/user/gitlab-sync/oauth2/callback` |
| GitLab → Overleaf | geen: geen webhook, de instantie hoeft niet bereikbaar te zijn vanaf GitLab |
| Opgeslagen gegevens | de GitLab-toegangs- en vernieuwingstokens van de gebruiker, versleuteld, in MongoDB |
| Periodieke taken | geen: synchronisatie gebeurt wanneer een gebruiker klikt |

### Configuratie

**1. ConfigMap**

```yaml title="30-config.yaml (additions)" theme={null}
  GITLAB_SYNC_ENABLED: "true"
  GITLAB_SYNC_CLIENT_ID: <client ID>
  # self-managed GitLab: its web address
  # GITLAB_SYNC_URL: https://gitlab.example.com
  # optional: send the module's requests to GitLab through an HTTP proxy
  # GITLAB_SYNC_PROXY_URL: http://proxy.example.com:3128
```

`GIT_BRIDGE_ENABLED: "true"` en de git-bridge-StatefulSet uit [Git-integratie](https://ayakaleaf-pro.mintlify.site/nl/on-premises/configuration/kubernetes/integrations/git-integration.md) moeten aanwezig zijn: zonder deze verbergen de accountinstellingen en de editor GitLab-synchronisatie.

**2. Secret**

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

`GITLAB_TOKEN_CIPHER_PASSWORD` versleutelt de GitLab-toegangs- en vernieuwingstokens van de gebruikers in MongoDB. Elke replica moet dezelfde waarde gebruiken, en als je deze later wijzigt, moet elke gebruiker GitLab opnieuw koppelen.

**3. Private CA (optioneel)**

Als je GitLab een certificaat van je eigen CA heeft, voeg de CA dan toe aan de Secret `overleaf-certs` die is gekoppeld op `/var/lib/overleaf/certs` (zie [Certificaten en andere bestanden](https://ayakaleaf-pro.mintlify.site/nl/on-premises/configuration/kubernetes#certificaten-en-andere-bestanden)) en stel `NODE_EXTRA_CA_CERTS: /var/lib/overleaf/certs/ca.pem` in de ConfigMap in.

**4. Toepassen, herstarten en controleren**

```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://gitlab.com/api/v4/version
done
```

Elke HTTP-status betekent dat GitLab bereikbaar is vanaf die pod; `000` betekent dat dat niet zo is.

### Meerdere replica's

Niets extra's naast de gedeelde `GITLAB_TOKEN_CIPHER_PASSWORD`. Een synchronisatie neemt een lock in Redis, gedeeld met de andere Git-synchronisaties, zodat twee replica's nooit tegelijk hetzelfde project synchroniseren. Het vernieuwen van het GitLab-token van een gebruiker neemt ook een Redis-lock, zodat twee replica's het niet tegelijkertijd vernieuwen.

### Getest op Kubernetes

Tegen een mock van een zelfbeheerde GitLab op `GITLAB_SYNC_URL` (vertrouwd via `NODE_EXTRA_CA_CERTS` uit `overleaf-certs`), op Kubernetes 1.37 met één replica en de Git-integratie ingeschakeld, slagen onze end-to-endtests voor GitLab-synchronisatie (40 gevallen): het account koppelen en ontkoppelen, een verlopend toegangstoken vernieuwen en ingetrokken tokens, exporteren naar een nieuw privé- of groepsproject, een repository importeren, pullen en pushen, merges, conflicten, verwijderde en geforceerd gepushte branches, binaire bestanden, hernoemingen en verwijderingen, en wat eigenaren, bewerkers en kijkers mogen doen.


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