> 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/pl/konfiguracja/overleaf-toolkit/s3.md).

# S3

{% hint style="info" %}
Ten dokument opisuje konfigurację S3 w Server CE i Overleaf Pro. A [osobny przewodnik](/on-premises/pl/konserwacja/s3-migration.md) można znaleźć na temat migracji istniejących danych do magazynu zgodnego z S3.
{% endhint %}

## Kiedy rozważyć użycie S3 do przechowywania danych

Dla instancji z mniej niż 1000 stanowiskami zalecamy korzystanie z lokalnego dysku z regularnymi [spójnymi kopiami zapasowymi](https://docs.overleaf.com/on-premises/maintenance/data-and-backups#performing-a-consistent-backup).

Dla większych instancji z ponad 1000 stanowiskami, które osiągają limity lokalnej pamięci masowej (rozmiaru lub przepustowości), zalecamy użycie backendu magazynu obiektowego zgodnego z S3 zamiast innych sieciowych rozwiązań pamięci masowej, takich jak NFS.

## Opcje magazynu obiektowego zgodnego z S3

Oto najpopularniejsze opcje magazynu obiektowego zgodnego z S3:

* [AWS S3](https://aws.amazon.com/s3/), zarządzane, sugerujemy wybranie AWS S3 podczas uruchamiania Overleaf CE/Server Pro w AWS
* [MINIO](https://min.io/), hostowane samodzielnie
* [Ceph](https://ceph.io/en/), hostowane samodzielnie
* Inni dostawcy hostingu również oferują jakiś rodzaj zarządzanego magazynu obiektowego zgodnego z S3; możesz chcieć użyć go zamiast uruchamiania własnego, jeśli już korzystasz z Overleaf CE/Server Pro u takiego dostawcy.

## Uwagi dotyczące opóźnień przy wyborze magazynu obiektowego zgodnego z S3

Opóźnienie między instancją Server CE/Server Pro a Twoim magazynem obiektowym zgodnym z S3 jest głównym czynnikiem wpływającym na czas potrzebny do zakończenia migracji. Opóźnienie wpływa również na wydajność przesyłania plików w Server CE/Server Pro, a wolne pobieranie plików może mieć również duży wpływ na czas kompilacji PDF. Sugerujemy zminimalizowanie geograficznej odległości między instancją Server CE/Server Pro a magazynem obiektowym zgodnym z S3. W środowisku zarządzanym oznaczałoby to utworzenie bucketu w tym samym regionie, a w przypadku rozwiązania on-premise uruchomienie obu w tym samym kampusie.

## Konfiguracja S3

Potrzebujemy czterech „bucketów” i dwóch ograniczonych kont użytkowników.

{% hint style="warning" %}
Buckety powinny **nie** być publicznie dostępne
{% 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>Użycie</td><td>Usługa</td><td>Wcześniej w <code>/var/lib/overleaf/data</code></td></tr><tr><td><code>overleaf-user-files</code></td><td>pliki użytkownika projektu</td><td>filestore</td><td><code>user_files</code></td></tr><tr><td><code>overleaf-template-files</code></td><td>pliki szablonów</td><td>filestore</td><td><code>template_files</code></td></tr><tr><td><code>overleaf-project-blobs</code></td><td>bloby historii projektu</td><td>historia i magazyn plików tylko do odczytu</td><td><code>history/overleaf-project-blobs</code></td></tr><tr><td><code>overleaf-chunks</code></td><td>fragmenty historii</td><td>history</td><td><code>history/overleaf-chunks</code></td></tr></tbody></table>

Możesz chcieć/potrzebować wybrać inną nazwę; upewnij się, że używasz niestandardowych bucketów we wszystkich poleceniach.

Poniżej użyjemy zastępników dla rzeczywistych danych uwierzytelniających:

<table><thead><tr><th width="431">Zmienna środowiskowa</th><th>Opis</th></tr></thead><tbody><tr><td><code>OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID</code></td><td>Klucz dostępu/nazwa użytkownika ograniczonego użytkownika usługi filestore.</td></tr><tr><td><code>OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY</code></td><td>Tajny klucz/hasło ograniczonego użytkownika usługi filestore.</td></tr><tr><td><code>OVERLEAF_HISTORY_S3_ACCESS_KEY_ID</code></td><td>Klucz dostępu/nazwa użytkownika ograniczonego użytkownika usługi history.</td></tr><tr><td><code>OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY</code></td><td>Tajny klucz/hasło ograniczonego użytkownika usługi history.</td></tr></tbody></table>

Server CE i Server Pro potrzebują tylko niewielkiego zestawu uprawnień dla każdego bucketu:

* utwórz obiekt
* pobierz obiekt
* usuń obiekt
* wyświetl bucket

### Zasady dostępu

Oto, jak mogłaby wyglądać polityka dla użytkownika 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/*"
    }
  ]
}
```

Oto, jak mogłaby wyglądać polityka dla użytkownika 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/*"
    }
  ]
}
```

### Przegląd zmiennych

#### Podczas korzystania z AWS S3

```bash
# Włącz backend S3 dla filestore
OVERLEAF_FILESTORE_BACKEND=s3

# Nazwa bucketu dla plików projektu
OVERLEAF_FILESTORE_USER_FILES_BUCKET_NAME=overleaf-user-files

# Nazwa bucketu dla plików szablonów
OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME=overleaf-template-files

# Klucz dla użytkownika filestore
OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID=...

# Sekret dla użytkownika filestore
OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY=...

# Region bucketu, który wybrałeś podczas tworzenia bucketów.
OVERLEAF_FILESTORE_S3_REGION=""

# Włącz backend S3 dla historii
OVERLEAF_HISTORY_BACKEND=s3

# Nazwa bucketu dla blobów historii projektu
OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET=overleaf-project-blobs

# Nazwa bucketu dla fragmentów historii
OVERLEAF_HISTORY_CHUNKS_BUCKET=overleaf-chunks

# Klucz dla użytkownika history
OVERLEAF_HISTORY_S3_ACCESS_KEY_ID=...

# Sekret dla użytkownika history
OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY=...

# Region bucketu, który wybrałeś podczas tworzenia bucketów.
OVERLEAF_HISTORY_S3_REGION=""
```

#### Podczas korzystania z opcji hostowanej samodzielnie

```bash
# Włącz backend S3 dla filestore
OVERLEAF_FILESTORE_BACKEND=s3

# Nazwa bucketu dla plików projektu
OVERLEAF_FILESTORE_USER_FILES_BUCKET_NAME=overleaf-user-files

# Nazwa bucketu dla plików szablonów
OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME=overleaf-template-files

# Klucz dla użytkownika filestore
OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID=...

# Sekret dla użytkownika filestore
OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY=...

# Punkt końcowy dostawcy S3
OVERLEAF_FILESTORE_S3_ENDPOINT=http://10.10.10.10:9000

# Dostęp do bucketów stylem ścieżki. Najprawdopodobniej musisz ustawić to na "true".
OVERLEAF_FILESTORE_S3_PATH_STYLE="true"

# Region bucketu. Najprawdopodobniej nie musisz tego konfigurować.
OVERLEAF_FILESTORE_S3_REGION=""

# Włącz backend S3 dla historii
OVERLEAF_HISTORY_BACKEND=s3

# Nazwa bucketu dla blobów historii projektu
OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET=overleaf-project-blobs

# Nazwa bucketu dla fragmentów historii
OVERLEAF_HISTORY_CHUNKS_BUCKET=overleaf-chunks

# Klucz dla użytkownika history
OVERLEAF_HISTORY_S3_ACCESS_KEY_ID=...

# Sekret dla użytkownika history
OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY=...

# Punkt końcowy dostawcy S3
OVERLEAF_HISTORY_S3_ENDPOINT=http://10.10.10.10:9000

# Dostęp do bucketów stylem ścieżki. Najprawdopodobniej musisz ustawić to na "true".
OVERLEAF_HISTORY_S3_PATH_STYLE="true"

# Region bucketu. Najprawdopodobniej nie musisz tego konfigurować.
OVERLEAF_HISTORY_S3_REGION=""
```

### Konfiguracja MINIO

{% hint style="info" %}
`MINIO_ROOT_USER` i `MINIO_ROOT_PASSWORD` to dane uwierzytelniające roota instancji MINIO.
{% endhint %}

Proszę postępować zgodnie z [oficjalną dokumentacją](https://min.io/docs/minio/linux/reference/minio-mc.html#quickstart) w celu uzyskania kopii `mc`.

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

# Umieść zawartość zasad z poprzedniej sekcji w
# odpowiednich plikach JSON policy-filestore.json i policy-history.json.

# Przypomnienie: odpowiednio zamień nazwy bucketów i dane uwierzytelniające.

# buckety filestore, użytkownik i polityka
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 historii, użytkownik i polityka
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/pl/konfiguracja/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.
