> 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/ru/konfiguraciya/overleaf-toolkit/s3.md).

# S3

{% hint style="info" %}
Этот документ описывает настройку S3 в Server CE и Overleaf Pro. Отдельное руководство [отдельное руководство](/on-premises/ru/obsluzhivanie/s3-migration.md) можно найти по миграции существующих данных в хранилище, совместимое с S3.
{% endhint %}

## Когда стоит рассматривать использование S3 для хранения данных

Для инстансов с числом мест менее 1000 мы рекомендуем использовать локальное дисковое хранилище с регулярными [надежными резервными копиями](https://docs.overleaf.com/on-premises/maintenance/data-and-backups#performing-a-consistent-backup).

Для более крупных инстансов с числом мест более 1000, которые достигают пределов своего локального хранилища (по объёму или пропускной способности), мы рекомендуем использовать объектное хранилище, совместимое с S3, вместо других сетевых решений хранения, таких как NFS.

## Варианты объектного хранилища, совместимого с S3

Вот самые популярные варианты объектного хранилища, совместимого с S3:

* [AWS S3](https://aws.amazon.com/s3/), управляемое; мы советуем выбрать AWS S3 при запуске Overleaf CE/Server Pro на AWS
* [MINIO](https://min.io/), self-hosted
* [Ceph](https://ceph.io/en/), self-hosted
* Другие провайдеры хостинга также предлагают какой-либо вариант управляемого объектного хранилища, совместимого с S3; возможно, вы захотите использовать его вместо развертывания собственного, если уже используете Overleaf CE/Server Pro у такого провайдера.

## Соображения по задержке при выборе объектного хранилища, совместимого с S3

Задержка между экземпляром Server CE/Server Pro и вашим объектным хранилищем, совместимым с S3, в значительной степени влияет на время, необходимое для завершения миграции. Задержка также влияет на производительность загрузки файлов в Server CE/Server Pro, а медленная загрузка файлов может сильно сказаться и на времени сборки PDF. Мы рекомендуем минимизировать географическое расстояние между вашим экземпляром Server CE/Server Pro и объектным хранилищем, совместимым с S3. В управляемой среде это означало бы размещение bucket в том же регионе, а для локального решения — запуск обоих компонентов в одном кампусе.

## Настройка S3

Нам нужны четыре «bucket» и две ограниченные учётные записи пользователей.

{% hint style="warning" %}
Bucket должны **не** быть общедоступными
{% 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>Использование</td><td>Служба</td><td>Ранее в <code>/var/lib/overleaf/data</code></td></tr><tr><td><code>overleaf-user-files</code></td><td>файлы пользователей проекта</td><td>filestore</td><td><code>user_files</code></td></tr><tr><td><code>overleaf-template-files</code></td><td>файлы шаблонов</td><td>filestore</td><td><code>template_files</code></td></tr><tr><td><code>overleaf-project-blobs</code></td><td>blob-объекты истории проекта</td><td>история и хранилище файлов только для чтения</td><td><code>history/overleaf-project-blobs</code></td></tr><tr><td><code>overleaf-chunks</code></td><td>фрагменты истории</td><td>history</td><td><code>history/overleaf-chunks</code></td></tr></tbody></table>

Возможно, вы захотите/вам потребуется выбрать другое имя; обязательно используйте пользовательские bucket во всех командах.

Ниже будут использованы заполнители вместо реальных учётных данных:

<table><thead><tr><th width="431">Переменная окружения</th><th>Описание</th></tr></thead><tbody><tr><td><code>OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID</code></td><td>Ключ доступа/имя пользователя ограниченной учётной записи службы filestore.</td></tr><tr><td><code>OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY</code></td><td>Секретный ключ/пароль ограниченной учётной записи службы filestore.</td></tr><tr><td><code>OVERLEAF_HISTORY_S3_ACCESS_KEY_ID</code></td><td>Ключ доступа/имя пользователя ограниченной учётной записи службы history.</td></tr><tr><td><code>OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY</code></td><td>Секретный ключ/пароль ограниченной учётной записи службы history.</td></tr></tbody></table>

Server CE и Server Pro нужны лишь небольшие наборы разрешений для каждого bucket:

* создавать объект
* получать объект
* удалять объект
* список bucket

### Политики доступа

Вот как может выглядеть политика для пользователя 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/*"
    }
  ]
}
```

Вот как может выглядеть политика для пользователя 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/*"
    }
  ]
}
```

### Обзоре переменных

#### При использовании AWS S3

```bash
# Включить backend S3 для filestore
OVERLEAF_FILESTORE_BACKEND=s3

# Имя bucket для файлов проекта
OVERLEAF_FILESTORE_USER_FILES_BUCKET_NAME=overleaf-user-files

# Имя bucket для файлов шаблонов
OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME=overleaf-template-files

# Ключ для пользователя filestore
OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID=...

# Секрет для пользователя filestore
OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY=...

# Регион bucket, который вы выбрали при создании bucket.
OVERLEAF_FILESTORE_S3_REGION=""

# Включить backend S3 для history
OVERLEAF_HISTORY_BACKEND=s3

# Имя bucket для blob-объектов истории проекта
OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET=overleaf-project-blobs

# Имя bucket для фрагментов истории
OVERLEAF_HISTORY_CHUNKS_BUCKET=overleaf-chunks

# Ключ для пользователя history
OVERLEAF_HISTORY_S3_ACCESS_KEY_ID=...

# Секрет для пользователя history
OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY=...

# Регион bucket, который вы выбрали при создании bucket.
OVERLEAF_HISTORY_S3_REGION=""
```

#### При использовании самохостимого варианта

```bash
# Включить backend S3 для filestore
OVERLEAF_FILESTORE_BACKEND=s3

# Имя bucket для файлов проекта
OVERLEAF_FILESTORE_USER_FILES_BUCKET_NAME=overleaf-user-files

# Имя bucket для файлов шаблонов
OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME=overleaf-template-files

# Ключ для пользователя filestore
OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID=...

# Секрет для пользователя filestore
OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY=...

# Конечная точка провайдера S3
OVERLEAF_FILESTORE_S3_ENDPOINT=http://10.10.10.10:9000

# Адресация bucket по путям. Скорее всего, вам нужно установить это в значение "true".
OVERLEAF_FILESTORE_S3_PATH_STYLE="true"

# Регион bucket. Скорее всего, вам не нужно это настраивать.
OVERLEAF_FILESTORE_S3_REGION=""

# Включить backend S3 для history
OVERLEAF_HISTORY_BACKEND=s3

# Имя bucket для blob-объектов истории проекта
OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET=overleaf-project-blobs

# Имя bucket для фрагментов истории
OVERLEAF_HISTORY_CHUNKS_BUCKET=overleaf-chunks

# Ключ для пользователя history
OVERLEAF_HISTORY_S3_ACCESS_KEY_ID=...

# Секрет для пользователя history
OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY=...

# Конечная точка провайдера S3
OVERLEAF_HISTORY_S3_ENDPOINT=http://10.10.10.10:9000

# Адресация bucket по путям. Скорее всего, вам нужно установить это в значение "true".
OVERLEAF_HISTORY_S3_PATH_STYLE="true"

# Регион bucket. Скорее всего, вам не нужно это настраивать.
OVERLEAF_HISTORY_S3_REGION=""
```

### Настройка MINIO

{% hint style="info" %}
`MINIO_ROOT_USER` и `MINIO_ROOT_PASSWORD` — это корневые учётные данные экземпляра MINIO.
{% endhint %}

Пожалуйста, следуйте [официальной документации](https://min.io/docs/minio/linux/reference/minio-mc.html#quickstart) для получения копии `mc`.

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

# Поместите содержимое политик из предыдущего раздела в
# соответствующие JSON-файлы policy-filestore.json и policy-history.json.

# Напоминание: замените имена bucket и учётные данные соответственно.

# bucket, пользователь и политика 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

# bucket, пользователь и политика history
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/ru/konfiguraciya/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.
