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

> La brukere synkronisere prosjektene sine med en mappe i Dropbox.

> [!NOTE]
>
> Denne funksjonen er utviklet av [ayaka-notes/ayakaleaf-pro](https://github.com/ayaka-notes/ayakaleaf-pro). Den er introdusert i v6.3.1 som en tidlig forhåndsversjon (early preview) og blir offisielt lansert i v6.4.0, så konfigurasjonen og virkemåten kan fortsatt endres. Vi trenger tilbakemeldingen din hvis du får problemer.

Dropbox-synkronisering holder prosjektene til en bruker synkronisert med Dropbox-en deres, slik som på Overleaf Cloud: når en bruker har koblet til Dropbox-kontoen sin, vises hvert av prosjektene deres som en mappe i `Apps/<your Dropbox app>/`, endringer i Overleaf sendes til Dropbox, og endringer som gjøres i Dropbox, kommer tilbake til Overleaf.

### Sette opp Dropbox-synkronisering

> [!WARNING]
>
> Du må aktivere [git-bridge](https://ayakaleaf-pro.mintlify.site/no/on-premises/configuration/overleaf-toolkit/integrations/git-integration.md) først: uten den skjuler kontoinnstillingene delen for prosjektsynkronisering.
>
> ```dotenv title="config/overleaf.rc" theme={null}
> GIT_BRIDGE_ENABLED=true
> ```

Opprett en app i [Dropbox App Console](https://www.dropbox.com/developers/apps), pålogget med Dropbox-kontoen som skal eie appen:

1. Klikk **Create app**, og fyll deretter ut siden:
   * **1. Choose an API**: velg **Scoped access**.
   * **2. Choose the type of access you need**: velg **App folder**, ikke **Full Dropbox**. Overleaf synkroniserer bare innenfor mappen til appen.
   * **3. Name your app**: skriv inn et navn, f.eks. `Overleaf`. Det må være unikt på Dropbox. Prosjektene til hver bruker vises i `Apps/<name of your app>/` i Dropbox-en deres, og dette navnet er `DROPBOX_APP_NAME` nedenfor.
   * Klikk **Create app**. Appen åpnes på fanen **Settings**.
2. På fanen **Permissions**, under **Files and folders**, krysser du av for `files.metadata.write`, `files.content.write` og `files.content.read`. `account_info.read` og `files.metadata.read` krysses av sammen med dem og kan ikke fjernes. Ikke kryss av for andre tillatelser.
3. Klikk **Submit** i linjen nederst på fanen **Permissions**. **Uten Submit lagres ikke tillatelsene**, og Dropbox nekter å synkronisere filer for brukerne som kobler til kontoen sin.

![](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: tillatelsene som skal krysses av, lagret med Submit

4. På fanen **Settings**, under **OAuth 2**, skriver du inn `${OVERLEAF_SITE_URL}/user/dropbox/oauth/callback` i **Redirect URIs** og **klikker deretter Add**. Det er ikke nok å skrive inn URI-en: den lagres 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: skriv inn redirect-URI-en, og klikk deretter Add

5. På fanen **Settings**, under **Webhooks**, skriver du inn `${OVERLEAF_SITE_URL}/dropbox/webhook` i **Webhook URIs** og **klikker Add** her også. Dropbox kaller den med en gang for å kontrollere den, så Overleaf må allerede kjøre med innstillingene nedenfor og være tilgjengelig fra internett (se [Webhook](#webhook)). Statusen viser **Enabled** når kontrollen er bestått.

Kopier **App key** og **App secret** (klikk **Show**) fra fanen **Settings**, og legg deretter til følgende innstillinger i Overleaf-miljøvariabelfilene dine. Du kan legge til webhooken (trinn 5) etter at Overleaf kjø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, må du sørge for at `OVERLEAF_SITE_URL` er riktig satt.
> * Dropbox fastsetter tillatelsene til et token når brukeren kobler til kontoen sin: å sende inn tillatelser endrer ikke eksisterende tokener. Brukere som koblet til før tillatelsene ble sendt inn, eller før du endret dem, må koble fra og koble til Dropbox-kontoen sin på nytt.
> * En ny app har statusen **Development**. Hvis **Development users** på fanen **Settings** viser **Only you**, kan bare din egen Dropbox-konto kobles til: klikk **Enable additional users** for å la andre brukere koble til sine. Deretter vises hvor mange brukere som har koblet til, f.eks. `1 / 500`: **en app i Development-status tar maksimalt 500 brukere**. For flere brukere klikker du **Apply for production**, og Dropbox går gjennom appen.

Hvis du befinner deg i en region med begrenset nettverkstilgang, kan det hende du må konfigurere en proxy for å få tilgang til Dropbox. Sett følgende miljøvariabel: `DROPBOX_SYNC_PROXY_URL=http://10.0.0.1:10808`. Det må være en vanlig HTTP/HTTPS-videresendingsproxy, og den må ikke bruke `127.0.0.1`.

#### Opprett databaseindeksene

Kjør dette én gang, før brukere kobler til Dropbox-kontoene sine. Indeksene som Dropbox-synkroniseringen bruker, opprettes ikke automatisk, så uten dem må hvert synkroniseringsoppslag skanne hele samlingen.

Toolkit-brukere: kjør `bin/mongo`. Docker Compose-brukere: kjør `docker compose exec mongo mongosh sharelatex`. Lim deretter inn:

```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 ufarlig å kjøre det på nytt: MongoDB hopper over indekser som allerede finnes.

> [!CAUTION]
>
> Ikke kjør `dropboxEntities`-migreringene i `tools/migrations` i stedet: `20220825160708_recreate_dropboxEntities` sletter samlingen, noe som sletter synkroniseringstilstanden til alle brukere.

### Webhook

Dropbox varsler Overleaf om endringer i Dropbox via en webhook, slik at de vises i Overleaf i løpet av sekunder. Webhooken går til adressen til nettstedet ditt, `${OVERLEAF_SITE_URL}/dropbox/webhook`, og ingen ekstra port er nødvendig, men **Dropbox må kunne nå den fra internett**. Når du legger den til i App Console, kontrollerer Dropbox den med en gang.

Uten en webhook, for eksempel på en server som Dropbox ikke kan nå, sendes endringer i Overleaf fortsatt til Dropbox, men endringer i Dropbox kommer bare tilbake når en bruker klikker *sync this project now* i Dropbox-dialogboksen i editoren.

### Slik fungerer synkroniseringen

* **Tilkobling**: når en bruker kobler til Dropbox-kontoen sin, sendes prosjektene brukeren eier, til Dropbox. Prosjekter som er delt med brukeren, vises i Dropbox ved neste endring.
* **Overleaf til Dropbox**: nye filer, navneendringer, flyttinger, slettinger og nye prosjektnavn sendes med en gang. Endringer i editoren sendes når Overleaf lagrer dem i lagringen sin, noen minutter etter at alle har forlatt prosjektet. For å sende dem tidligere klikker du *sync this project now* i Dropbox-dialogboksen i editoren (én gang per minutt).
* **Dropbox til Overleaf**: nye og endrede filer, nye mapper og slettinger i en prosjektmappe brukes på prosjektet. En ny mappe øverst i appmappen blir et nytt prosjekt. Hvis en prosjektmappe slettes i Dropbox, merkes prosjektet som slettet i Overleaf.
* **Konflikter**: når en fil endres begge steder samtidig, vinner den siste endringen. Dropbox kan beholde den andre versjonen som en *conflicted copy*.
* **Samarbeidspartnere**: samarbeidspartnere som kobler til Dropbox-en sin, får prosjektene som er delt med dem. Brukere med kun lesetilgang og korrekturlesere får prosjektet, men endringene deres i Dropbox synkroniseres ikke tilbake til Overleaf.
* **Ignorerte filer**: filer som Overleaf ikke synkroniserer, som byggeresultater (`.aux`, `.log`, …), `.DS_Store` eller virtuelle Python-miljøer, blir bare liggende i Dropbox.

### Q\&A

> [accordion] Hvorfor kan ikke en bruker koble til Dropbox-kontoen sin?
>
> **Svar:**
>
> * En Dropbox-mappe som Overleaf ikke kjenner ennå, matches med et prosjekt etter navnet, så en bruker med prosjekter som har samme navn, blir bedt om å gi dem nye navn først. Navn sammenlignes uten å skille mellom store og små bokstaver, og arkiverte prosjekter og prosjekter i papirkurven teller også.
> * En Dropbox-konto kan bare kobles til én Overleaf-konto.

> [accordion] Hvorfor ble en Dropbox-konto koblet fra?
>
> **Svar:** Overleaf kobler fra en Dropbox-konto når Dropbox avviser tokenet (for eksempel etter at brukeren har fjernet appen i Dropbox), når Dropbox-en er full, eller når Dropbox har suspendert kontoen. Et varsel i prosjektlisten forteller brukeren hvilken av disse som skjedde, helt til kontoen kobles til igjen. Brukeren kan koble den til igjen når problemet er løst.

> [accordion] Kan jeg gi nytt navn til en prosjektmappe i Dropbox?
>
> **Svar:** Gi heller prosjektet nytt navn i Overleaf: mappen i Dropbox får da også nytt navn. For Overleaf betyr en navneendring av mappen i Dropbox at prosjektmappen slettes og en ny opprettes, så det gamle prosjektet merkes som slettet, og et nytt prosjekt opprettes fra filene.

> [accordion] Hvorfor er noen prosjektmapper nummerert, som «Thesis (1)»?
>
> **Svar:** Hvert prosjekt har sin egen mappe, også når to prosjekter har samme navn. Dropbox kan ikke ha to mapper med samme navn, så det legger til et nummer på mappen som ble opprettet sist. Nummeret avhenger av hvilke navn som var ledige i Dropbox i det øyeblikket, ikke av hvilket prosjekt som er eldst. Overleaf vet hvilken mappe som hører til hvert prosjekt, så endringer havner aldri i mappen til et annet prosjekt med samme navn.
>
> Et opplastet prosjekt med et navn som allerede er i bruk, får også et nummer i navnet i Overleaf, for eksempel "Thesis (1)".

> [accordion] Hva skjer når jeg sletter en prosjektmappe i Dropbox?
>
> **Svar:**
>
> * Hvis ingen andre prosjekter har navnet til mappen, merkes prosjektet som slettet i Overleaf. Filene og historikken beholdes.
> * Hvis flere prosjekter har det navnet, kan ikke Overleaf avgjøre hvilket prosjekt mappen tilhørte. Overleaf kobler fra Dropbox-kontoen og viser et varsel som ber om å gi prosjektene nye navn. Gi prosjektene ulike navn før du sletter mappene deres i Dropbox.
> * En nummerert mappe, som "Thesis (1)", samsvarer ikke med noe prosjektnavn, så å slette den endrer ikke prosjektet i Overleaf. Klikk *sync this project now* i Dropbox-dialogboksen i editoren for å sende prosjektet til Dropbox igjen.

> [accordion] Hva skjer i Dropbox når jeg sletter et prosjekt i Overleaf?
>
> **Svar:** Ingenting, mappen blir liggende i Dropbox. Slett mappen i Dropbox hvis du ikke lenger trenger den.

> [accordion] Hva skjer med endringer i Dropbox mens et prosjekt er arkivert eller ligger i papirkurven?
>
> **Svar:** De brukes ikke på prosjektet, og de hentes heller ikke inn når prosjektet gjenopprettes. Etter gjenopprettingen slutter Overleaf å sende sine endringer i filene som ble endret i Dropbox i mellomtiden, så de to sidene blir ulike.
>
> For å synkronisere en slik fil igjen lagrer du den én gang til i Dropbox. Overleaf tar da Dropbox-versjonen: endringer som er gjort i filen i Overleaf siden gjenopprettingen, erstattes, men blir værende i prosjekthistorikken. Gjenopprett et prosjekt før du endrer det i Dropbox.

> [accordion] Hvorfor åpner Dropbox-lenken i editoren Dropbox-hjemmesiden?
>
> **Svar:** Lenken går til `Apps/<app folder>/<project>` på dropbox.com, slik som på Overleaf Cloud. Når Dropbox viser `Apps`-mappen sin med et oversatt navn, for eksempel `应用` på kinesisk, finner ikke lenken mappen, og Dropbox åpner hjemmesiden i stedet. Åpne prosjektmappen fra den oversatte `Apps`-mappen i Dropbox.

> [accordion] Hvorfor mangler noen filer i et prosjekt i Dropbox?
>
> **Svar:** Endringer som gjøres mens synkroniseringstjenesten ikke kjører, for eksempel mens den startes på nytt, sendes ikke til Dropbox senere. Klikk *sync this project now* i Dropbox-dialogboksen i editoren: da sendes hele prosjektet på nytt.


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