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

> Anna käyttäjien synkronoida projektinsa Dropboxin kansion kanssa.

> [!NOTE]
>
> Tämän ominaisuuden on kehittänyt [ayaka-notes/ayakaleaf-pro](https://github.com/ayaka-notes/ayakaleaf-pro). Se on otettu käyttöön versiossa v6.3.1 varhaisena esiversiona, ja se julkaistaan virallisesti versiossa v6.4.0, joten sen määritykset ja toiminta voivat vielä muuttua. Tarvitsemme palautettasi, jos kohtaat ongelmia.

Dropbox-synkronointi pitää käyttäjän projektit synkronoituina hänen Dropboxinsa kanssa, kuten Overleaf Cloudissa: kun käyttäjä linkittää Dropbox-tilinsä, jokainen hänen projekteistaan näkyy kansiona kohteessa `Apps/<your Dropbox app>/`, Overleafissa tehdyt muutokset lähetetään Dropboxiin, ja Dropboxissa tehdyt muutokset palaavat Overleafiin.

### Dropbox-synkronoinnin määrittäminen

> [!WARNING]
>
> Sinun on ensin otettava [git-bridge](https://ayakaleaf-pro.mintlify.site/fi/on-premises/configuration/overleaf-toolkit/integrations/git-integration.md) käyttöön: ilman sitä tilin asetukset piilottavat projektien synkronointiosion.
>
> ```dotenv title="config/overleaf.rc" theme={null}
> GIT_BRIDGE_ENABLED=true
> ```

Luo sovellus [Dropbox App Consolessa](https://www.dropbox.com/developers/apps) kirjautuneena sillä Dropbox-tilillä, joka omistaa sovelluksen:

1. Napsauta **Create app** ja täytä sitten sivu:
   * **1. Choose an API**: valitse **Scoped access**.
   * **2. Choose the type of access you need**: valitse **App folder**, ei **Full Dropbox**. Overleaf synkronoi vain sovelluksen kansion sisällä.
   * **3. Name your app**: anna nimi, esim. `Overleaf`. Sen on oltava yksilöllinen Dropboxissa. Kunkin käyttäjän projektit näkyvät hänen Dropboxissaan kohteessa `Apps/<name of your app>/`, ja tämä nimi on alla oleva `DROPBOX_APP_NAME`.
   * Napsauta **Create app**. Sovellus avautuu **Settings**-välilehdelle.
2. Valitse **Permissions**-välilehdellä kohdasta **Files and folders** oikeudet `files.metadata.write`, `files.content.write` ja `files.content.read`. `account_info.read` ja `files.metadata.read` valitaan niiden mukana, eikä niiden valintaa voi poistaa. Älä valitse muita oikeuksia.
3. Napsauta **Submit** **Permissions**-välilehden alareunan palkissa. **Ilman Submit-painiketta oikeuksia ei tallenneta**, ja Dropbox kieltäytyy synkronoimasta tiedostoja käyttäjille, jotka linkittävät tilinsä.

![](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: valittavat oikeudet tallennettuna Submit-painikkeella

4. Kirjoita **Settings**-välilehdellä kohdassa **OAuth 2** kenttään **Redirect URIs** `${OVERLEAF_SITE_URL}/user/dropbox/oauth/callback` ja **napsauta sitten Add**. URI:n kirjoittaminen ei riitä: se tallentuu vasta, kun se näkyy kentän yläpuolella olevassa luettelossa.

![](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: kirjoita uudelleenohjaus-URI ja napsauta sitten Add

5. Kirjoita **Settings**-välilehdellä kohdassa **Webhooks** kenttään **Webhook URIs** `${OVERLEAF_SITE_URL}/dropbox/webhook` ja **napsauta** myös tässä **Add**. Dropbox kutsuu sitä heti tarkistaakseen sen, joten Overleafin on jo oltava käynnissä alla olevilla asetuksilla ja tavoitettavissa internetistä (katso [Webhook](#webhook)). Sen tilaksi tulee **Enabled**, kun tarkistus onnistuu.

Kopioi **App key** ja **App secret** (napsauta **Show**) **Settings**-välilehdeltä ja lisää sitten seuraavat asetukset Overleafin ympäristömuuttujatiedostoihin. Voit lisätä webhookin (vaihe 5), kun Overleaf on käynnissä näillä asetuksilla.

```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]
>
> * Varmista ennen uudelleenohjaus-URI:n ja webhookin määrittämistä, että `OVERLEAF_SITE_URL` on asetettu oikein.
> * Dropbox lukitsee tunnuksen oikeudet, kun käyttäjä linkittää tilinsä: oikeuksien lähettäminen ei muuta olemassa olevia tunnuksia. Käyttäjien, jotka linkittivät tilinsä ennen kuin oikeudet lähetettiin tai ennen kuin muutit niitä, on purettava Dropbox-tilinsä linkitys ja linkitettävä se uudelleen.
> * Uusi sovellus on **Development**-tilassa. Jos **Settings**-välilehden kohdassa **Development users** lukee **Only you**, vain oman Dropbox-tilisi voi linkittää: napsauta **Enable additional users**, jotta muutkin käyttäjät voivat linkittää tilinsä. Sen jälkeen siinä näkyy, kuinka moni käyttäjä on linkittänyt tilinsä, esim. `1 / 500`: **Development-tilassa olevalla sovelluksella voi olla enintään 500 käyttäjää**. Jos tarvitset enemmän käyttäjiä, napsauta **Apply for production**, jolloin Dropbox arvioi sovelluksen.

Jos olet alueella, jolla verkkoyhteyksiä on rajoitettu, sinun on ehkä määritettävä välityspalvelin Dropboxin käyttämiseksi. Aseta seuraava ympäristömuuttuja: `DROPBOX_SYNC_PROXY_URL=http://10.0.0.1:10808`. Sen on oltava tavallinen HTTP/HTTPS-välityspalvelin (forward proxy), eikä se saa käyttää osoitetta `127.0.0.1`.

#### Tietokannan indeksien luominen

Suorita tämä kerran, ennen kuin käyttäjät linkittävät Dropbox-tilinsä. Dropbox-synkronoinnin käyttämiä indeksejä ei luoda automaattisesti, joten ilman niitä jokainen synkronointihaku käy läpi koko kokoelman.

Toolkitin käyttäjät: suorita `bin/mongo`. Docker Composen käyttäjät: suorita `docker compose exec mongo mongosh sharelatex`. Liitä sitten:

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

Uudelleen suorittaminen on vaaratonta: MongoDB ohittaa jo olemassa olevat indeksit.

> [!CAUTION]
>
> Älä suorita tämän sijaan hakemiston `tools/migrations` `dropboxEntities`-migraatioita: `20220825160708_recreate_dropboxEntities` poistaa kokoelman, mikä poistaa jokaisen käyttäjän synkronointitilan.

### Webhook

Dropbox ilmoittaa Overleafille Dropboxissa tehdyistä muutoksista webhookin avulla, joten ne näkyvät Overleafissa sekunneissa. Webhook kohdistuu sivustosi osoitteeseen `${OVERLEAF_SITE_URL}/dropbox/webhook`, eikä ylimääräistä porttia tarvita, mutta **Dropboxin on tavoitettava se internetistä**. Kun lisäät sen App Consolessa, Dropbox tarkistaa sen heti.

Ilman webhookia, esimerkiksi palvelimella, jota Dropbox ei tavoita, Overleafissa tehdyt muutokset lähetetään edelleen Dropboxiin, mutta Dropboxissa tehdyt muutokset palaavat vasta, kun käyttäjä napsauttaa *sync this project now* editorin Dropbox-valintaikkunassa.

### Miten synkronointi toimii

* **Linkittäminen**: kun käyttäjä linkittää Dropbox-tilinsä, hänen omistamansa projektit lähetetään Dropboxiin. Hänen kanssaan jaetut projektit ilmestyvät Dropboxiin niiden seuraavan muutoksen yhteydessä.
* **Overleafista Dropboxiin**: uudet tiedostot, uudelleennimeämiset, siirrot, poistot ja projektien uudelleennimeämiset lähetetään heti. Editorissa tehdyt muokkaukset lähetetään, kun Overleaf tallentaa ne tallennustilaansa, muutama minuutti sen jälkeen, kun kaikki ovat poistuneet projektista. Jos haluat lähettää ne aiemmin, napsauta *sync this project now* editorin Dropbox-valintaikkunassa (kerran minuutissa).
* **Dropboxista Overleafiin**: projektikansion uudet ja muuttuneet tiedostot, uudet kansiot ja poistot viedään projektiin. Uudesta kansiosta sovelluskansion ylimmällä tasolla tulee uusi projekti. Projektikansion poistaminen Dropboxissa merkitsee projektin poistetuksi Overleafissa.
* **Ristiriidat**: kun tiedosto muuttuu molemmissa paikoissa samanaikaisesti, viimeisin muutos voittaa. Dropbox saattaa säilyttää toisen version *ristiriitaisena kopiona* (conflicted copy).
* **Yhteistyökumppanit**: Dropboxinsa linkittävät yhteistyökumppanit saavat heidän kanssaan jaetut projektit. Pelkät katseluoikeudet omaavat käyttäjät ja arvioijat saavat projektin, mutta heidän Dropboxissa tekemänsä muutokset eivät synkronoidu takaisin Overleafiin.
* **Ohitetut tiedostot**: tiedostot, joita Overleaf ei synkronoi, kuten käännöksen tulosteet (`.aux`, `.log`, …), `.DS_Store` tai Pythonin virtuaaliympäristöt, säilyvät vain Dropboxissa.

### Q\&A

> [accordion] Miksi käyttäjä ei voi linkittää Dropbox-tiliään?
>
> **Vastaus:**
>
> * Dropbox-kansio, jota Overleaf ei vielä tunne, yhdistetään projektiin sen nimen perusteella, joten käyttäjää, jonka projekteilla on sama nimi, pyydetään ensin nimeämään ne uudelleen. Nimiä verrataan kirjainkoosta riippumatta, ja myös arkistoidut ja roskakoriin siirretyt projektit lasketaan mukaan.
> * Dropbox-tilin voi linkittää vain yhteen Overleaf-tiliin.

> [accordion] Miksi Dropbox-tilin linkitys purettiin?
>
> **Vastaus:** Overleaf purkaa Dropbox-tilin linkityksen, kun Dropbox hylkää sen tunnuksen (esimerkiksi sen jälkeen, kun käyttäjä on poistanut sovelluksen Dropboxissa), kun Dropbox on täynnä tai kun Dropbox on jäädyttänyt tilin. Projektiluettelossa näkyvä ilmoitus kertoo käyttäjälle, mikä näistä tapahtui, kunnes hän linkittää tilin uudelleen. Käyttäjä voi linkittää tilin uudelleen, kun ongelma on ratkaistu.

> [accordion] Voinko nimetä projektikansion uudelleen Dropboxissa?
>
> **Vastaus:** Nimeä projekti mieluummin uudelleen Overleafissa: myös sen kansio Dropboxissa nimetään uudelleen. Overleafin kannalta kansion uudelleennimeäminen Dropboxissa poistaa projektikansion ja luo uuden, joten vanha projekti merkitään poistetuksi ja tiedostoista luodaan uusi projekti.

> [accordion] Miksi joidenkin projektien kansiot on numeroitu, kuten ”Thesis (1)”?
>
> **Vastaus:** Jokaisella projektilla on oma kansionsa, myös silloin, kun kahdella projektilla on sama nimi. Dropboxissa ei voi olla kahta samannimistä kansiota, joten se lisää numeron myöhemmin luotuun kansioon. Numero riippuu siitä, mitkä nimet olivat sillä hetkellä vapaina Dropboxissa, eikä siitä, kumpi projekti on vanhempi. Overleaf tietää kunkin projektin kansion, joten muutokset eivät koskaan päädy toisen samannimisen projektin kansioon.
>
> Ladattu projekti, jonka nimi on jo käytössä, nimetään myös Overleafissa numerolla, esimerkiksi ”Thesis (1)”.

> [accordion] Mitä tapahtuu, kun poistan projektikansion Dropboxissa?
>
> **Vastaus:**
>
> * Jos millään muulla projektilla ei ole kansion nimeä, projekti merkitään poistetuksi Overleafissa. Sen tiedostot ja historia säilytetään.
> * Jos usealla projektilla on sama nimi, Overleaf ei pysty päättelemään, mille niistä kansio kuului. Se purkaa Dropbox-tilin linkityksen ja näyttää ilmoituksen, jossa pyydetään nimeämään projektit uudelleen. Anna projekteille eri nimet ennen kuin poistat niiden kansiot Dropboxissa.
> * Numeroitu kansio, kuten ”Thesis (1)”, ei vastaa mitään projektin nimeä, joten sen poistaminen ei muuta projektia Overleafissa. Napsauta *sync this project now* editorin Dropbox-valintaikkunassa lähettääksesi projektin uudelleen Dropboxiin.

> [accordion] Mitä Dropboxissa tapahtuu, kun poistan projektin Overleafissa?
>
> **Vastaus:** Ei mitään, sen kansio säilyy Dropboxissa. Poista kansio Dropboxissa, jos et enää tarvitse sitä.

> [accordion] Mitä Dropboxissa tehdyille muutoksille tapahtuu, kun projekti on arkistoitu tai roskakorissa?
>
> **Vastaus:** Niitä ei viedä projektiin, eikä projektin palauttaminen tuo niitä myöskään mukaan. Palauttamisen jälkeen Overleaf lakkaa lähettämästä muutoksiaan niihin tiedostoihin, joita on sillä välin muutettu Dropboxissa, joten molemmat puolet eroavat toisistaan.
>
> Saat tällaisen tiedoston takaisin synkronointiin tallentamalla sen vielä kerran Dropboxissa. Overleaf ottaa tällöin käyttöön Dropbox-version: palauttamisen jälkeen Overleafissa tiedostoon tehdyt muutokset korvataan, ja ne säilyvät projektin historiassa. Palauta projekti ennen kuin muutat sitä Dropboxissa.

> [accordion] Miksi editorin Dropbox-linkki avaa Dropboxin etusivun?
>
> **Vastaus:** Linkki osoittaa dropbox.comissa kohteeseen `Apps/<app folder>/<project>`, kuten Overleaf Cloudissa. Kun Dropbox näyttää `Apps`-kansionsa käännetyllä nimellä, esimerkiksi kiinaksi `应用`, linkki ei löydä kansiota ja Dropbox avaa sen sijaan etusivunsa. Avaa projektikansio Dropboxissa käännetystä `Apps`-kansiosta.

> [accordion] Miksi joitakin projektin tiedostoja puuttuu Dropboxista?
>
> **Vastaus:** Muutoksia, jotka tehtiin synkronointipalvelun ollessa pysähdyksissä, esimerkiksi sen uudelleenkäynnistyksen aikana, ei lähetetä Dropboxiin myöhemmin. Napsauta *sync this project now* editorin Dropbox-valintaikkunassa: se lähettää koko projektin uudelleen.


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