> For the complete documentation index, see [llms.txt](https://ayakaleaf-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://ayakaleaf-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ý [samostatný návod](/on-premises/on-premises-cs/udrzba/s3-migration.md) najdete pro migraci stávajících dat do úložiště kompatibilního se S3.
{% endhint %}

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

U instancí s méně než 1000 uživatelskými místy 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 místy, které dosáhnou limitů svého lokálního úložiště (velikostí nebo propustností), doporučujeme použít backend objektového úložiště kompatibilního 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 nejpopulárně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ě provozované
* [Ceph](https://ceph.io/en/), samostatně provozované
* I ostatní poskytovatelé hostingu mají nějakou formu spravovaného objektového úložiště kompatibilního se S3; možná budete chtít použít je místo provozování vlastního řešení, pokud už Overleaf CE/Server Pro provozujete u takového poskytovatele.

## Úvahy o latenci 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 velkým faktorem ovlivňujícím dobu potřebnou 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 dobu 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é oblasti, a v on-premise řešení provozovat obě služby ve 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>soubory uživatelů projektu</td><td>filestore</td><td><code>user_files</code></td></tr><tr><td><code>overleaf-template-files</code></td><td>soubory šablon</td><td>filestore</td><td><code>template_files</code></td></tr><tr><td><code>overleaf-project-blobs</code></td><td>objekty historie projektu</td><td>historie a úložiště pouze pro čtení</td><td><code>history/overleaf-project-blobs</code></td></tr><tr><td><code>overleaf-chunks</code></td><td>části 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, ve všech příkazech nezapomeňte používat vlastní buckety.

Následující bude používat 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 history.</td></tr><tr><td><code>OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY</code></td><td>Tajný klíč/heslo omezeného uživatele služby history.</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 by mohla 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 by mohla vypadat politika pro uživatele history:

```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 projektové soubory
OVERLEAF_FILESTORE_USER_FILES_BUCKET_NAME=overleaf-user-files

# Název bucketu pro soubory šablon
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=...

# Oblast bucketu, kterou jste zvolili při vytváření bucketů.
OVERLEAF_FILESTORE_S3_REGION=""

# Povolit backend S3 pro historii
OVERLEAF_HISTORY_BACKEND=s3

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

# Název bucketu pro části 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=...

# Oblast bucketu, kterou jste zvolili při vytváření bucketů.
OVERLEAF_HISTORY_S3_REGION=""
```

#### Při použití samostatně provozované varianty

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

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

# Název bucketu pro soubory šablon
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=...

# Koncový bod poskytovatele S3
OVERLEAF_FILESTORE_S3_ENDPOINT=http://10.10.10.10:9000

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

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

# Povolit backend S3 pro historii
OVERLEAF_HISTORY_BACKEND=s3

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

# Název bucketu pro části 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=...

# Koncový bod poskytovatele S3
OVERLEAF_HISTORY_S3_ENDPOINT=http://10.10.10.10:9000

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

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

### Nastavení MINIO

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

Prosím, postupujte 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

# Vložte obsah politik z předchozí sekce do
# příslušných souborů JSON policy-filestore.json a policy-history.json.

# Připomínka: odpovídajícím způsobem 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

# history buckety, uživatel a politika
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://ayakaleaf-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.
