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

> Låt användare synkronisera sina projekt med en mapp i sin Dropbox.

> [!NOTE]
>
> Den här funktionen är utvecklad av [ayaka-notes/ayakaleaf-pro](https://github.com/ayaka-notes/ayakaleaf-pro). Den introducerades i v6.3.1 som en tidig förhandsversion och släpps officiellt i v6.4.0, så dess konfiguration och beteende kan fortfarande ändras. Vi behöver din återkoppling om du stöter på problem.

Dropbox-synkronisering håller en användares projekt synkroniserade med användarens Dropbox, precis som på Overleaf Cloud: när en användare har länkat sitt Dropbox-konto visas vart och ett av användarens projekt som en mapp i `Apps/<your Dropbox app>/`, ändringar i Overleaf skickas till Dropbox och ändringar som görs i Dropbox kommer tillbaka till Overleaf.

### Konfigurera Dropbox-synkronisering

> [!WARNING]
>
> Du måste aktivera [git-bridge](https://ayakaleaf-pro.mintlify.site/sv/on-premises/configuration/overleaf-toolkit/integrations/git-integration.md) först: utan den döljs avsnittet för projektsynkronisering i kontoinställningarna.
>
> ```dotenv title="config/overleaf.rc" theme={null}
> GIT_BRIDGE_ENABLED=true
> ```

Skapa en app i [Dropbox App Console](https://www.dropbox.com/developers/apps), inloggad med det Dropbox-konto som ska äga appen:

1. Klicka på **Create app** och fyll sedan i sidan:
   * **1. Choose an API**: välj **Scoped access**.
   * **2. Choose the type of access you need**: välj **App folder**, inte **Full Dropbox**. Overleaf synkroniserar bara inuti appens mapp.
   * **3. Name your app**: ange ett namn, t.ex. `Overleaf`. Det måste vara unikt på Dropbox. Varje användares projekt visas i `Apps/<name of your app>/` i användarens Dropbox, och det här namnet är `DROPBOX_APP_NAME` nedan.
   * Klicka på **Create app**. Appen öppnas på fliken **Settings**.
2. På fliken **Permissions**, under **Files and folders**, markerar du `files.metadata.write`, `files.content.write` och `files.content.read`. `account_info.read` och `files.metadata.read` markeras tillsammans med dem och kan inte avmarkeras. Markera inga andra behörigheter.
3. Klicka på **Submit** i fältet längst ned på fliken **Permissions**. **Utan Submit sparas inte behörigheterna**, och Dropbox vägrar då att synkronisera filer för de användare som länkar sitt 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: behörigheterna som ska markeras, sparade med Submit

4. På fliken **Settings**, under **OAuth 2**, anger du `${OVERLEAF_SITE_URL}/user/dropbox/oauth/callback` i **Redirect URIs** och **klickar sedan på Add**. Det räcker inte att skriva in URI:n: den sparas först när den visas i listan ovanför fältet.

![](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: ange redirect-URI:n och klicka sedan på Add

5. På fliken **Settings**, under **Webhooks**, anger du `${OVERLEAF_SITE_URL}/dropbox/webhook` i **Webhook URIs** och **klickar sedan på Add** även här. Dropbox anropar den direkt för att kontrollera den, så Overleaf måste redan köras med inställningarna nedan och vara nåbar från internet (se [Webhook](#webhook)). Dess status visar **Enabled** när kontrollen har godkänts.

Kopiera **App key** och **App secret** (klicka på **Show**) från fliken **Settings** och lägg sedan till följande inställningar i dina filer med miljövariabler för Overleaf. Du kan lägga till webhooken (steg 5) när Overleaf körs 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]
>
> * Kontrollera att `OVERLEAF_SITE_URL` är korrekt angiven innan du konfigurerar redirect-URI:n och webhooken.
> * Dropbox fastställer behörigheterna för en token när användaren länkar sitt konto: att skicka in behörigheter ändrar inte befintliga token. Användare som länkade innan behörigheterna skickades in, eller innan du ändrade dem, måste avlänka och länka sitt Dropbox-konto igen.
> * En ny app har statusen **Development**. Om **Development users** på fliken **Settings** visar **Only you** kan bara ditt Dropbox-konto länkas: klicka på **Enable additional users** för att låta andra användare länka sina konton. Därefter visas hur många användare som har länkat, t.ex. `1 / 500`: **en app i Development kan ha högst 500 användare**. För fler användare klickar du på **Apply for production**, och Dropbox granskar då appen.

Om du befinner dig i en region med begränsad nätverksåtkomst kan du behöva konfigurera en proxy för att nå Dropbox. Ange följande miljövariabel: `DROPBOX_SYNC_PROXY_URL=http://10.0.0.1:10808`. Det måste vara en vanlig HTTP/HTTPS-framåtproxy och får inte använda `127.0.0.1`.

#### Skapa databasindexen

Kör detta en gång, innan användarna länkar sina Dropbox-konton. De index som Dropbox-synkroniseringen använder skapas inte automatiskt, så utan dem genomsöker varje synkroniseringsuppslag hela samlingen.

Toolkit-användare: kör `bin/mongo`. Docker Compose-användare: kör `docker compose exec mongo mongosh sharelatex`. Klistra sedan in:

```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 är ofarligt att köra det igen: MongoDB hoppar över index som redan finns.

> [!CAUTION]
>
> Kör inte `dropboxEntities`-migreringarna i `tools/migrations` i stället: `20220825160708_recreate_dropboxEntities` tar bort samlingen, vilket raderar synkroniseringstillståndet för alla användare.

### Webhook

Dropbox meddelar Overleaf om ändringar i Dropbox via en webhook, så att de syns i Overleaf inom några sekunder. Webhooken går till din webbplats adress, `${OVERLEAF_SITE_URL}/dropbox/webhook`, och ingen extra port behövs, men **Dropbox måste kunna nå den från internet**. När du lägger till den i App Console kontrollerar Dropbox den direkt.

Utan webhook, till exempel på en server som Dropbox inte kan nå, skickas ändringar i Overleaf fortfarande till Dropbox, men ändringar i Dropbox kommer bara tillbaka när en användare klickar på *sync this project now* i Dropbox-dialogrutan i redigeraren.

### Så fungerar synkroniseringen

* **Länkning**: när en användare länkar sitt Dropbox-konto skickas de projekt som användaren äger till Dropbox. Projekt som delats med användaren visas i Dropbox vid sin nästa ändring.
* **Från Overleaf till Dropbox**: nya filer, namnbyten, flyttningar, borttagningar och namnbyten på projekt skickas direkt. Ändringar i redigeraren skickas när Overleaf sparar dem i sin lagring, några minuter efter att alla har lämnat projektet. För att skicka dem tidigare klickar du på *sync this project now* i Dropbox-dialogrutan i redigeraren (en gång per minut).
* **Från Dropbox till Overleaf**: nya och ändrade filer, nya mappar och borttagningar i en projektmapp tillämpas på projektet. En ny mapp högst upp i appmappen blir ett nytt projekt. Om du tar bort en projektmapp i Dropbox markeras projektet som borttaget i Overleaf.
* **Konflikter**: när en fil ändras på båda ställena samtidigt vinner den senaste ändringen. Dropbox kan spara den andra versionen som en *conflicted copy*.
* **Medarbetare**: medarbetare som länkar sin Dropbox får de projekt som delats med dem. Användare med endast läsbehörighet och granskare får projektet, men deras ändringar i Dropbox synkroniseras inte tillbaka till Overleaf.
* **Ignorerade filer**: filer som Overleaf inte synkroniserar, som byggutdata (`.aux`, `.log`, …), `.DS_Store` eller virtuella Python-miljöer, finns bara kvar i Dropbox.

### Q\&A

> [accordion] Varför kan en användare inte länka sitt Dropbox-konto?
>
> **Svar:**
>
> * En Dropbox-mapp som Overleaf ännu inte känner till matchas mot ett projekt efter sitt namn, så en användare vars projekt har samma namn ombeds först byta namn på dem. Namnen jämförs utan hänsyn till skiftläge, och arkiverade projekt och projekt i papperskorgen räknas också.
> * Ett Dropbox-konto kan bara länkas till ett Overleaf-konto.

> [accordion] Varför avlänkades ett Dropbox-konto?
>
> **Svar:** Overleaf avlänkar ett Dropbox-konto när Dropbox avvisar dess token (till exempel efter att användaren har tagit bort appen i Dropbox), när Dropbox-lagringen är full eller när Dropbox har stängt av kontot. Ett meddelande i projektlistan talar om för användaren vilket av dessa som har hänt, tills användaren länkar kontot igen. Användaren kan länka det igen när problemet är löst.

> [accordion] Kan jag byta namn på en projektmapp i Dropbox?
>
> **Svar:** Byt i stället namn på projektet i Overleaf: dess mapp i Dropbox byter också namn. För Overleaf innebär ett namnbyte av mappen i Dropbox att projektmappen tas bort och en ny skapas, så det gamla projektet markeras som borttaget och ett nytt projekt skapas från filerna.

> [accordion] Varför är vissa projektmappar numrerade, till exempel ”Thesis (1)”?
>
> **Svar:** Varje projekt har en egen mapp, även när två projekt har samma namn. Dropbox kan inte ha två mappar med samma namn, så den lägger till ett nummer på mappen som skapades senare. Numret beror på vilka namn som var lediga i Dropbox i det ögonblicket, inte på vilket projekt som är äldst. Overleaf känner till varje projekts mapp, så ändringar hamnar aldrig i mappen för ett annat projekt med samma namn.
>
> Ett uppladdat projekt vars namn redan är upptaget får också ett nummer i Overleaf, till exempel ”Thesis (1)”.

> [accordion] Vad händer när jag tar bort en projektmapp i Dropbox?
>
> **Svar:**
>
> * Om inget annat projekt har mappens namn markeras projektet som borttaget i Overleaf. Dess filer och historik behålls.
> * Om flera projekt har det namnet kan Overleaf inte avgöra vilket av dem mappen tillhörde. Det avlänkar Dropbox-kontot och visar ett meddelande som ber användaren byta namn på projekten. Ge projekten olika namn innan du tar bort deras mappar i Dropbox.
> * En numrerad mapp, till exempel ”Thesis (1)”, matchar inget projektnamn, så att ta bort den ändrar inte projektet i Overleaf. Klicka på *sync this project now* i Dropbox-dialogrutan i redigeraren för att skicka projektet till Dropbox igen.

> [accordion] Vad händer i Dropbox när jag tar bort ett projekt i Overleaf?
>
> **Svar:** Ingenting, dess mapp finns kvar i Dropbox. Ta bort mappen i Dropbox om du inte längre behöver den.

> [accordion] Vad händer med ändringar i Dropbox medan ett projekt är arkiverat eller ligger i papperskorgen?
>
> **Svar:** De tillämpas inte på projektet, och de förs inte heller in när projektet återställs. Efter återställningen slutar Overleaf skicka sina ändringar av de filer som under tiden har ändrats i Dropbox, så de två sidorna skiljer sig åt.
>
> För att synkronisera en sådan fil igen sparar du den en gång till i Dropbox. Overleaf tar då Dropbox-versionen: ändringar som gjorts i filen i Overleaf sedan återställningen ersätts och finns kvar i projekthistoriken. Återställ ett projekt innan du ändrar det i Dropbox.

> [accordion] Varför öppnar redigerarens Dropbox-länk Dropbox startsida?
>
> **Svar:** Länken går till `Apps/<app folder>/<project>` på dropbox.com, precis som i Overleaf Cloud. När Dropbox visar sin `Apps`-mapp under ett översatt namn, till exempel `应用` på kinesiska, hittar länken inte mappen och Dropbox öppnar i stället sin startsida. Öppna projektmappen från den översatta `Apps`-mappen i Dropbox.

> [accordion] Varför saknas vissa filer i ett projekt i Dropbox?
>
> **Svar:** Ändringar som görs medan synkroniseringstjänsten inte körs, till exempel medan den startas om, skickas inte till Dropbox i efterhand. Klicka på *sync this project now* i Dropbox-dialogrutan i redigeraren: den skickar hela projektet igen.


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