> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/on-premises/on-premises-cs/konfigurace/overleaf-toolkit/s3.md).

# S3

{% hint style="info" %}
Tento dokument popisuje nastavení S3 v Server CE a Overleaf Pro.  [samostatný průvodce](/on-premises/on-premises-cs/udrzba/s3-migration.md) je k dispozici pro migraci stávajících dat na úložiště kompatibilní se S3.
{% endhint %}

## Kdy zvážit použití S3 pro ukládání dat

U instancí s méně než 1000 uživateli doporučujeme používat lokální diskové úložiště s pravidelnými [konzistentními zálohami](https://docs.overleaf.com/on-premises/maintenance/data-and-backups#performing-a-consistent-backup).

U větších instancí s více než 1000 uživateli, které narážejí na limity svého lokálního úložiště (velikost nebo propustnost), doporučujeme použít objektové úložiště kompatibilní se S3 místo jiných síťových úložných řešení, jako je NFS.

## Možnosti objektového úložiště kompatibilního se S3

Zde jsou nejoblíbenější možnosti objektového úložiště kompatibilního se S3:

* [AWS S3](https://aws.amazon.com/s3/), spravované, doporučujeme zvolit AWS S3 při provozu Overleaf CE/Server Pro na AWS
* [MINIO](https://min.io/), samostatně hostované
* [Ceph](https://ceph.io/en/), samostatně hostované
* Ostatní poskytovatelé hostingu mají také nějakou formu spravovaného objektového úložiště kompatibilního se S3; pokud už u takového poskytovatele provozujete Overleaf CE/Server Pro, možná budete chtít použít toto místo provozu vlastního řešení.

## Zohlednění latence při výběru objektového úložiště kompatibilního se S3

Latence mezi instancí Server CE/Server Pro a vaším objektovým úložištěm kompatibilním se S3 je významným faktorem doby potřebné k dokončení migrace. Latence také ovlivňuje výkon nahrávání souborů v Server CE/Server Pro a pomalé stahování souborů může mít velký dopad i na časy kompilace PDF. Doporučujeme minimalizovat geografickou vzdálenost mezi vaší instancí Server CE/Server Pro a objektovým úložištěm kompatibilním se S3. Ve spravovaném prostředí by to znamenalo zřídit bucket ve stejném regionu a u on-premise řešení provozovat obě části na stejném kampusu.

## Nastavení S3

Potřebujeme čtyři „buckety“ a dva omezené uživatelské účty.

{% hint style="warning" %}
Buckety by měly **ne** být veřejně přístupné
{% endhint %}

<table data-header-hidden><thead><tr><th width="279"></th><th width="152"></th><th width="97"></th><th></th></tr></thead><tbody><tr><td>Bucket</td><td>Použití</td><td>Služba</td><td>Dříve v <code>/var/lib/overleaf/data</code></td></tr><tr><td><code>overleaf-user-files</code></td><td>uživatelské soubory projektu</td><td>filestore</td><td><code>user_files</code></td></tr><tr><td><code>overleaf-template-files</code></td><td>souborové šablony</td><td>filestore</td><td><code>template_files</code></td></tr><tr><td><code>overleaf-project-blobs</code></td><td>bloby historie projektu</td><td>historie a read-only filestore</td><td><code>history/overleaf-project-blobs</code></td></tr><tr><td><code>overleaf-chunks</code></td><td>bloky historie</td><td>history</td><td><code>history/overleaf-chunks</code></td></tr></tbody></table>

Možná budete chtít/potřebovat zvolit jiný název, v každém příkazu nezapomeňte použít vlastní buckety.

Následující použije zástupné symboly pro skutečné přihlašovací údaje:

<table><thead><tr><th width="431">Proměnná prostředí</th><th>Popis</th></tr></thead><tbody><tr><td><code>OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID</code></td><td>Přístupový klíč/uživatelské jméno omezeného uživatele služby filestore.</td></tr><tr><td><code>OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY</code></td><td>Tajný klíč/heslo omezeného uživatele služby filestore.</td></tr><tr><td><code>OVERLEAF_HISTORY_S3_ACCESS_KEY_ID</code></td><td>Přístupový klíč/uživatelské jméno omezeného uživatele služby historie.</td></tr><tr><td><code>OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY</code></td><td>Tajný klíč/heslo omezeného uživatele služby historie.</td></tr></tbody></table>

Server CE a Server Pro potřebují na každém bucketu jen malou sadu oprávnění:

* vytvořit objekt
* získat objekt
* smazat objekt
* vypsat bucket

### Přístupové politiky

Takto může vypadat politika pro uživatele filestore:

```json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket"
      ],
      "Resource": "arn:aws:s3:::overleaf-user-files"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:DeleteObject"
      ],
      "Resource": "arn:aws:s3:::overleaf-user-files/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
      ],
      "Resource": "arn:aws:s3:::overleaf-project-blobs/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket"
      ],
      "Resource": "arn:aws:s3:::overleaf-template-files"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:DeleteObject"
      ],
      "Resource": "arn:aws:s3:::overleaf-template-files/*"
    }
  ]
}
```

Takto může vypadat politika pro uživatele historie:

```json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket"
      ],
      "Resource": "arn:aws:s3:::overleaf-project-blobs"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:DeleteObject"
      ],
      "Resource": "arn:aws:s3:::overleaf-project-blobs/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket"
      ],
      "Resource": "arn:aws:s3:::overleaf-chunks"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:DeleteObject"
      ],
      "Resource": "arn:aws:s3:::overleaf-chunks/*"
    }
  ]
}
```

### Přehled proměnných

#### Při použití AWS S3

```bash
# Povolit backend S3 pro filestore
OVERLEAF_FILESTORE_BACKEND=s3

# Název bucketu pro soubory projektu
OVERLEAF_FILESTORE_USER_FILES_BUCKET_NAME=overleaf-user-files

# Název bucketu pro souborové šablony
OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME=overleaf-template-files

# Klíč pro uživatele filestore
OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID=...

# Tajný klíč pro uživatele filestore
OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY=...

# Region bucketu, který jste zvolili při vytváření bucketů.
OVERLEAF_FILESTORE_S3_REGION=""

# Povolit backend S3 pro historii
OVERLEAF_HISTORY_BACKEND=s3

# Název bucketu pro bloby historie projektu
OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET=overleaf-project-blobs

# Název bucketu pro bloky historie
OVERLEAF_HISTORY_CHUNKS_BUCKET=overleaf-chunks

# Klíč pro uživatele historie
OVERLEAF_HISTORY_S3_ACCESS_KEY_ID=...

# Tajný klíč pro uživatele historie
OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY=...

# Region bucketu, který jste zvolili při vytváření bucketů.
OVERLEAF_HISTORY_S3_REGION=""
```

#### Při použití samostatně hostované možnosti

```bash
# Povolit backend S3 pro filestore
OVERLEAF_FILESTORE_BACKEND=s3

# Název bucketu pro soubory projektu
OVERLEAF_FILESTORE_USER_FILES_BUCKET_NAME=overleaf-user-files

# Název bucketu pro souborové šablony
OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME=overleaf-template-files

# Klíč pro uživatele filestore
OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID=...

# Tajný klíč pro uživatele filestore
OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY=...

# Konečný bod poskytovatele S3
OVERLEAF_FILESTORE_S3_ENDPOINT=http://10.10.10.10:9000

# Adresování bucketů ve stylu cesty. S největší pravděpodobností je třeba nastavit na "true".
OVERLEAF_FILESTORE_S3_PATH_STYLE="true"

# Region bucketu. S největší pravděpodobností jej nemusíte konfigurovat.
OVERLEAF_FILESTORE_S3_REGION=""

# Povolit backend S3 pro historii
OVERLEAF_HISTORY_BACKEND=s3

# Název bucketu pro bloby historie projektu
OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET=overleaf-project-blobs

# Název bucketu pro bloky historie
OVERLEAF_HISTORY_CHUNKS_BUCKET=overleaf-chunks

# Klíč pro uživatele historie
OVERLEAF_HISTORY_S3_ACCESS_KEY_ID=...

# Tajný klíč pro uživatele historie
OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY=...

# Konečný bod poskytovatele S3
OVERLEAF_HISTORY_S3_ENDPOINT=http://10.10.10.10:9000

# Adresování bucketů ve stylu cesty. S největší pravděpodobností je třeba nastavit na "true".
OVERLEAF_HISTORY_S3_PATH_STYLE="true"

# Region bucketu. S největší pravděpodobností jej nemusíte konfigurovat.
OVERLEAF_HISTORY_S3_REGION=""
```

### Nastavení MINIO

{% hint style="info" %}
`MINIO_ROOT_USER` a `MINIO_ROOT_PASSWORD` jsou root přihlašovací údaje instance MINIO.
{% endhint %}

Postupujte prosím podle [oficiální dokumentace](https://min.io/docs/minio/linux/reference/minio-mc.html#quickstart) pro získání kopie `mc`.

```bash
mc alias set s3 http://10.10.10.10:9000 MINIO_ROOT_USER MINIO_ROOT_PASSWORD

# Obsah politik z předchozí sekce vložte do
# příslušného souboru json policy-filestore.json a policy-history.json.

# Připomínka: Podle toho nahraďte názvy bucketů a přihlašovací údaje.

# buckety, uživatel a politika pro filestore
mc mb --ignore-existing s3/overleaf-user-files
mc mb --ignore-existing s3/overleaf-template-files
mc admin user add s3 \\
  OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID \\
  OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY
mc admin policy create s3 overleaf-filestore policy-filestore.json
mc admin policy attach s3 overleaf-filestore \\
  --user=OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID

# buckety, uživatel a politika pro historii
mc mb --ignore-existing s3/overleaf-project-blobs
mc mb --ignore-existing s3/overleaf-chunks
mc admin user add s3 \\
  OVERLEAF_HISTORY_S3_ACCESS_KEY_ID \\
  OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY
mc admin policy create s3 overleaf-history policy-history.json
mc admin policy attach s3 overleaf-history \\
  --user=OVERLEAF_HISTORY_S3_ACCESS_KEY_ID
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/on-premises/on-premises-cs/konfigurace/overleaf-toolkit/s3.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
