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

# Dropbox-synkronisering

> Lad brugere synkronisere deres projekter med en mappe i deres Dropbox.

> [!NOTE]
>
> Denne funktion er udviklet af [ayaka-notes/ayakaleaf-pro](https://github.com/ayaka-notes/ayakaleaf-pro). Den er introduceret i v6.3.1 som en tidlig forhåndsversion og vil blive officielt udgivet i v6.4.0, så dens konfiguration og adfærd kan stadig ændre sig. Vi har brug for din feedback, hvis du oplever problemer.

Dropbox-synkronisering holder en brugers projekter synkroniseret med brugerens Dropbox, ligesom på Overleaf Cloud: når en bruger har tilknyttet sin Dropbox-konto, vises hvert af brugerens projekter som en mappe i `Apps/<your Dropbox app>/`, ændringer i Overleaf sendes til Dropbox, og ændringer foretaget i Dropbox kommer tilbage til Overleaf.

### Opsætning af Dropbox-synkronisering

> [!WARNING]
>
> Du skal først aktivere [git-bridge](https://ayakaleaf-pro.mintlify.site/da/on-premises/configuration/overleaf-toolkit/integrations/git-integration.md): uden den skjuler kontoindstillingerne afsnittet om projektsynkronisering.
>
> ```dotenv title="config/overleaf.rc" theme={null}
> GIT_BRIDGE_ENABLED=true
> ```

Opret en app i [Dropbox App Console](https://www.dropbox.com/developers/apps), mens du er logget ind med den Dropbox-konto, der skal eje appen:

1. Klik på **Create app**, og udfyld derefter siden:
   * **1. Choose an API**: vælg **Scoped access**.
   * **2. Choose the type of access you need**: vælg **App folder**, ikke **Full Dropbox**. Overleaf synkroniserer kun inden for appens mappe.
   * **3. Name your app**: angiv et navn, f.eks. `Overleaf`. Det skal være unikt på Dropbox. Hver brugers projekter vises i `Apps/<name of your app>/` i brugerens Dropbox, og dette navn er `DROPBOX_APP_NAME` nedenfor.
   * Klik på **Create app**. Appen åbnes på fanen **Settings**.
2. På fanen **Permissions** skal du under **Files and folders** markere `files.metadata.write`, `files.content.write` og `files.content.read`. `account_info.read` og `files.metadata.read` markeres sammen med dem og kan ikke fravælges. Markér ikke andre tilladelser.
3. Klik på **Submit** i bjælken nederst på fanen **Permissions**. **Uden Submit gemmes tilladelserne ikke**, og Dropbox nægter at synkronisere filer for de brugere, der tilknytter deres konto.

![](https://mintcdn.com/ayakaleaf-pro/34P8O6kHo91beEvQ/images/on-premises/dropbox-app-permissions.png?fit=max\&auto=format\&n=34P8O6kHo91beEvQ\&q=85\&s=8e99711b1fcf03d3d1655f65fea3a6b8)

Dropbox App Console: de tilladelser, der skal markeres og gemmes med Submit

4. På fanen **Settings** skal du under **OAuth 2** angive `${OVERLEAF_SITE_URL}/user/dropbox/oauth/callback` i **Redirect URIs** og derefter **klikke på Add**. Det er ikke nok at skrive URI'en: den gemmes først, når den vises i listen over feltet.

![](https://mintcdn.com/ayakaleaf-pro/34P8O6kHo91beEvQ/images/on-premises/dropbox-app-redirect-uri.png?fit=max\&auto=format\&n=34P8O6kHo91beEvQ\&q=85\&s=d980dc4dec22a90b5bf1f7e147cfc7c0)

Dropbox App Console: angiv redirect-URI'en, og klik derefter på Add

5. På fanen **Settings** skal du under **Webhooks** angive `${OVERLEAF_SITE_URL}/dropbox/webhook` i **Webhook URIs** og derefter også **klikke på Add**. Dropbox kalder den med det samme for at kontrollere den, så Overleaf skal allerede køre med indstillingerne nedenfor og kunne nås fra internettet (se [Webhook](#webhook)). Dens status viser **Enabled**, når kontrollen er bestået.

Kopiér **App key** og **App secret** (klik på **Show**) fra fanen **Settings**, og tilføj derefter følgende indstillinger til dine Overleaf-miljøvariabelfiler. Du kan tilføje webhooken (trin 5), når Overleaf kører med dem.

```dotenv title="config/variables.env" wrap theme={null}
# used to encrypt the user's Dropbox refresh token.
# How to generate: `openssl rand -hex 32`
DROPBOX_TOKEN_CIPHER_PASSWORD=0123456789ABCDEFG # changed to yours

# Dropbox Sync Settings
DROPBOX_ENABLED=true
DROPBOX_APP_KEY=
DROPBOX_APP_SECRET=
# the name of your Dropbox app (step 1), which is the folder name in Apps/
DROPBOX_APP_NAME=Overleaf

# OAuth callback is: ${OVERLEAF_SITE_URL}/user/dropbox/oauth/callback
# Webhook is: ${OVERLEAF_SITE_URL}/dropbox/webhook
# (Optional) DROPBOX_SYNC_PROXY_URL=http://10.0.0.1:10808
```

> [!WARNING]
>
> * Før du konfigurerer redirect-URI'en og webhooken, skal du sikre dig, at `OVERLEAF_SITE_URL` er sat korrekt.
> * Dropbox fastlåser et tokens tilladelser, når brugeren tilknytter sin konto: indsendelse af tilladelser ændrer ikke eksisterende tokens. Brugere, der tilknyttede deres konto, før tilladelserne blev indsendt, eller før du ændrede dem, skal fjerne tilknytningen til deres Dropbox-konto og tilknytte den igen.
> * En ny app har status **Development**. Hvis **Development users** på fanen **Settings** viser **Only you**, kan kun din Dropbox-konto tilknyttes: klik på **Enable additional users** for at lade andre brugere tilknytte deres. Derefter vises det, hvor mange brugere der har tilknyttet deres konto, f.eks. `1 / 500`: **en Development-app tillader højst 500 brugere**. For flere brugere skal du klikke på **Apply for production**, hvorefter Dropbox gennemgår appen.

Hvis du befinder dig i en region med begrænset netværksadgang, kan det være nødvendigt at konfigurere en proxy for at få adgang til Dropbox. Sæt følgende miljøvariabel: `DROPBOX_SYNC_PROXY_URL=http://10.0.0.1:10808`. Det skal være en almindelig HTTP/HTTPS-videresendelsesproxy, og den må ikke bruge `127.0.0.1`.

#### Create the database indexes

Kør dette én gang, før brugerne tilknytter deres Dropbox-konti. De indekser, som Dropbox-synkronisering bruger, oprettes ikke automatisk, så uden dem gennemsøger hvert synkroniseringsopslag hele samlingen.

Toolkit-brugere: kør `bin/mongo`. Docker Compose-brugere: kør `docker compose exec mongo mongosh sharelatex`. Indsæt derefter:

```js theme={null}
db.dropboxEntities.createIndex(
  { 'overleaf.userId': 1, 'dropbox.id': 1 },
  { name: 'overleaf.userId_1_dropbox.id_1', unique: true,
    partialFilterExpression: { 'dropbox.id': { $exists: true } } })
db.dropboxEntities.createIndex(
  { 'overleaf.userId': 1, 'overleaf.id': 1 },
  { name: 'overleaf.userId_1_overleaf.id_1', unique: true,
    partialFilterExpression: { 'overleaf.id': { $exists: true } } })
db.dropboxEntities.createIndex({ 'overleaf.userId': 1, 'dropbox.pathLower': 'hashed' })
db.dropboxProjects.createIndex({ userId: 1, projectId: 1 }, { name: 'projectId_userId_1', unique: true })
db.dropboxProjects.createIndex({ userId: 1, dropboxId: 1 }, { name: 'userId_dropboxId_1', unique: true })
```

Det er harmløst at køre det igen: MongoDB springer indekser over, der allerede findes.

> [!CAUTION]
>
> Kør ikke `dropboxEntities`-migreringerne i `tools/migrations` i stedet: `20220825160708_recreate_dropboxEntities` sletter samlingen, hvilket sletter synkroniseringstilstanden for alle brugere.

### Webhook

Dropbox fortæller Overleaf om ændringer i Dropbox via en webhook, så de vises i Overleaf inden for få sekunder. Webhooken sendes til dit websteds adresse, `${OVERLEAF_SITE_URL}/dropbox/webhook`. Der kræves ingen ekstra port, men **Dropbox skal kunne nå den fra internettet**. Når du tilføjer den i App Console, kontrollerer Dropbox den med det samme.

Uden en webhook, for eksempel på en server som Dropbox ikke kan nå, sendes ændringer i Overleaf stadig til Dropbox, men ændringer i Dropbox kommer først tilbage, når en bruger klikker på *sync this project now* i editorens Dropbox-dialog.

### Sådan fungerer synkronisering

* **Tilknytning**: når en bruger tilknytter sin Dropbox-konto, sendes de projekter, brugeren ejer, til Dropbox. Projekter, der er delt med brugeren, vises i Dropbox ved deres næste ændring.
* **Overleaf til Dropbox**: nye filer, omdøbninger, flytninger, sletninger og omdøbninger af projekter sendes med det samme. Redigeringer i editoren sendes, når Overleaf gemmer dem i sit lager, nogle minutter efter at alle har forladt projektet. For at sende dem tidligere skal du klikke på *sync this project now* i editorens Dropbox-dialog (én gang i minuttet).
* **Dropbox til Overleaf**: nye og ændrede filer, nye mapper og sletninger i en projektmappe anvendes på projektet. En ny mappe øverst i appmappen bliver til et nyt projekt. Hvis en projektmappe slettes i Dropbox, markeres projektet som slettet i Overleaf.
* **Konflikter**: når en fil ændres begge steder på samme tid, vinder den seneste ændring. Dropbox kan beholde den anden version som en *conflicted copy*.
* **Samarbejdspartnere**: samarbejdspartnere, der tilknytter deres Dropbox, får de projekter, der er delt med dem. Seere med kun læseadgang og korrekturlæsere får projektet, men deres ændringer i Dropbox synkroniseres ikke tilbage til Overleaf.
* **Ignorerede filer**: filer, som Overleaf ikke synkroniserer, f.eks. build-output (`.aux`, `.log`, …), `.DS_Store` eller virtuelle Python-miljøer, forbliver kun i Dropbox.

### Q\&A

> [accordion] Hvorfor kan en bruger ikke tilknytte sin Dropbox-konto?
>
> **Svar:**
>
> * En Dropbox-mappe, som Overleaf endnu ikke kender, matches med et projekt efter sit navn, så en bruger, hvis projekter deler et navn, bliver bedt om først at omdøbe dem. Navne sammenlignes uden hensyn til store og små bogstaver, og arkiverede projekter og projekter i papirkurven tæller også med.
> * En Dropbox-konto kan kun tilknyttes én Overleaf-konto.

> [accordion] Hvorfor blev tilknytningen til en Dropbox-konto fjernet?
>
> **Svar:** Overleaf fjerner tilknytningen til en Dropbox-konto, når Dropbox afviser dens token (for eksempel efter at brugeren har fjernet appen i Dropbox), når Dropbox er fuld, eller når Dropbox har suspenderet kontoen. En notifikation i projektlisten fortæller brugeren, hvilken af disse årsager der er tale om, indtil kontoen tilknyttes igen. Brugeren kan tilknytte den igen, når problemet er løst.

> [accordion] Kan jeg omdøbe en projektmappe i Dropbox?
>
> **Svar:** Omdøb i stedet projektet i Overleaf: dets mappe i Dropbox bliver også omdøbt. For Overleaf betyder en omdøbning af mappen i Dropbox, at projektmappen slettes, og en ny oprettes, så det gamle projekt markeres som slettet, og et nyt projekt oprettes ud fra filerne.

> [accordion] Hvorfor er nogle projektmapper nummererede, f.eks. „Thesis (1)“?
>
> **Svar:** Hvert projekt har sin egen mappe, også når to projekter har samme navn. Dropbox kan ikke indeholde to mapper med samme navn, så den tilføjer et nummer til den mappe, der oprettes senere. Nummeret afhænger af, hvilke navne der var ledige i Dropbox på det tidspunkt, ikke af hvilket projekt der er ældst. Overleaf kender hvert projekts mappe, så ændringer sendes aldrig til mappen for et andet projekt med samme navn.
>
> Et uploadet projekt, hvis navn allerede er taget, får også et nummer i navnet i Overleaf, for eksempel „Thesis (1)“.

> [accordion] Hvad sker der, når jeg sletter en projektmappe i Dropbox?
>
> **Svar:**
>
> * Hvis intet andet projekt har mappens navn, markeres projektet som slettet i Overleaf. Dets filer og historik bevares.
> * Hvis flere projekter har det navn, kan Overleaf ikke afgøre, hvilket af dem mappen tilhørte. Overleaf fjerner tilknytningen til Dropbox-kontoen og viser en notifikation, der beder om at omdøbe projekterne. Giv projekterne forskellige navne, før du sletter deres mapper i Dropbox.
> * En nummereret mappe, f.eks. „Thesis (1)“, matcher intet projektnavn, så sletning af den ændrer ikke projektet i Overleaf. Klik på *sync this project now* i editorens Dropbox-dialog for at sende projektet til Dropbox igen.

> [accordion] Hvad sker der i Dropbox, når jeg sletter et projekt i Overleaf?
>
> **Svar:** Ingenting, dets mappe bliver i Dropbox. Slet mappen i Dropbox, hvis du ikke længere har brug for den.

> [accordion] Hvad sker der med ændringer i Dropbox, mens et projekt er arkiveret eller i papirkurven?
>
> **Svar:** De anvendes ikke på projektet, og gendannelse af projektet henter dem heller ikke ind. Efter gendannelsen holder Overleaf op med at sende sine ændringer af de filer, der i mellemtiden blev ændret i Dropbox, så de to sider er forskellige.
>
> For at bringe en sådan fil i synkronisering igen skal du gemme den endnu en gang i Dropbox. Overleaf bruger så Dropbox-versionen: ændringer foretaget i filen i Overleaf siden gendannelsen erstattes og forbliver i projekthistorikken. Gendan et projekt, før du ændrer det i Dropbox.

> [accordion] Hvorfor åbner editorens Dropbox-link Dropbox' startside?
>
> **Svar:** Linket går til `Apps/<app folder>/<project>` på dropbox.com, ligesom på Overleaf Cloud. Når Dropbox viser sin `Apps`-mappe under et oversat navn, for eksempel `应用` på kinesisk, finder linket ikke mappen, og Dropbox åbner i stedet sin startside. Åbn projektmappen fra den oversatte `Apps`-mappe i Dropbox.

> [accordion] Hvorfor mangler nogle af et projekts filer i Dropbox?
>
> **Svar:** Ændringer foretaget, mens synkroniseringstjenesten ikke kørte, for eksempel mens den genstartede, sendes ikke til Dropbox senere. Klik på *sync this project now* i editorens Dropbox-dialog: det sender hele projektet igen.


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