> 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/id/konfigurasi/overleaf-toolkit/s3.md).

# S3

{% hint style="info" %}
Dokumen ini membahas penyiapan S3 di Server CE dan Overleaf Pro. Sebuah [panduan terpisah](/on-premises/id/pemeliharaan/s3-migration.md) dapat ditemukan untuk memigrasikan data yang sudah ada ke penyimpanan yang kompatibel dengan S3.
{% endhint %}

## Kapan mempertimbangkan menggunakan S3 untuk penyimpanan data

Untuk instance dengan kurang dari 1000 seat, kami merekomendasikan menggunakan penyimpanan disk lokal dengan [cadangan yang konsisten](https://docs.overleaf.com/on-premises/maintenance/data-and-backups#performing-a-consistent-backup).

Untuk instance yang lebih besar dengan lebih dari 1000 seat yang mencapai batas penyimpanan lokalnya (ukuran atau throughput), kami merekomendasikan menggunakan backend penyimpanan objek yang kompatibel dengan S3 daripada solusi penyimpanan berbasis jaringan lain seperti NFS.

## Opsi penyimpanan objek yang kompatibel dengan S3

Berikut adalah opsi paling populer untuk penyimpanan objek yang kompatibel dengan S3:

* [AWS S3](https://aws.amazon.com/s3/), dikelola, kami menyarankan memilih AWS S3 saat menjalankan Overleaf CE/Server Pro di AWS
* [MINIO](https://min.io/), di-host sendiri
* [Ceph](https://ceph.io/en/), di-host sendiri
* Penyedia hosting lain juga memiliki semacam penyimpanan objek yang kompatibel dengan S3 yang dikelola, Anda mungkin ingin menggunakan ini alih-alih menjalankan milik sendiri ketika sudah menjalankan Overleaf CE/Server Pro di penyedia tersebut.

## Pertimbangan latensi saat memilih penyimpanan objek yang kompatibel dengan S3

Latensi antara instance Server CE/Server Pro dan penyimpanan objek Anda yang kompatibel dengan S3 merupakan faktor besar yang berkontribusi pada waktu yang dibutuhkan untuk menyelesaikan migrasi. Latensi juga berdampak pada performa unggah file di Server CE/Server Pro dan unduhan file yang lambat dapat berdampak besar pada waktu kompilasi PDF juga. Kami menyarankan meminimalkan jarak geografis antara instance Server CE/Server Pro Anda dan penyimpanan objek yang kompatibel dengan S3. Dalam lingkungan terkelola, ini berarti menyediakan bucket di region yang sama, dan untuk solusi on-premise, menjalankan keduanya di kampus yang sama.

## Penyiapan S3

Kami memerlukan empat "bucket" dan dua akun pengguna terbatas.

{% hint style="warning" %}
Bucket sebaiknya **tidak** dapat diakses secara publik
{% 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>Penggunaan</td><td>Layanan</td><td>Sebelumnya di <code>/var/lib/overleaf/data</code></td></tr><tr><td><code>overleaf-user-files</code></td><td>file pengguna proyek</td><td>filestore</td><td><code>user_files</code></td></tr><tr><td><code>overleaf-template-files</code></td><td>file template</td><td>filestore</td><td><code>template_files</code></td></tr><tr><td><code>overleaf-project-blobs</code></td><td>blob riwayat proyek</td><td>riwayat dan filestore hanya baca</td><td><code>history/overleaf-project-blobs</code></td></tr><tr><td><code>overleaf-chunks</code></td><td>potongan riwayat</td><td>history</td><td><code>history/overleaf-chunks</code></td></tr></tbody></table>

Anda mungkin ingin/perlu memilih nama yang berbeda, pastikan untuk menggunakan bucket kustom di semua perintah.

Berikut akan menggunakan placeholder untuk kredensial sebenarnya:

<table><thead><tr><th width="431">Variabel lingkungan</th><th>Deskripsi</th></tr></thead><tbody><tr><td><code>OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID</code></td><td>Access key/nama pengguna dari pengguna terbatas layanan filestore.</td></tr><tr><td><code>OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY</code></td><td>Secret key/kata sandi dari pengguna terbatas layanan filestore.</td></tr><tr><td><code>OVERLEAF_HISTORY_S3_ACCESS_KEY_ID</code></td><td>Access key/nama pengguna dari pengguna terbatas layanan riwayat.</td></tr><tr><td><code>OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY</code></td><td>Secret key/kata sandi dari pengguna terbatas layanan riwayat.</td></tr></tbody></table>

Server CE dan Server Pro hanya memerlukan serangkaian izin kecil pada setiap bucket:

* membuat objek
* mendapatkan objek
* menghapus objek
* daftar bucket

### Kebijakan Akses

Berikut adalah bagaimana kebijakan untuk pengguna filestore dapat terlihat:

```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/*"
    }
  ]
}
```

Berikut adalah bagaimana kebijakan untuk pengguna riwayat dapat terlihat:

```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/*"
    }
  ]
}
```

### Ikhtisar variabel

#### Saat menggunakan AWS S3

```bash
# Aktifkan backend S3 untuk filestore
OVERLEAF_FILESTORE_BACKEND=s3

# Nama bucket untuk file proyek
OVERLEAF_FILESTORE_USER_FILES_BUCKET_NAME=overleaf-user-files

# Nama bucket untuk file template
OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME=overleaf-template-files

# Kunci untuk pengguna filestore
OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID=...

# Rahasia untuk pengguna filestore
OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY=...

# Region bucket yang Anda pilih saat membuat bucket.
OVERLEAF_FILESTORE_S3_REGION=""

# Aktifkan backend S3 untuk riwayat
OVERLEAF_HISTORY_BACKEND=s3

# Nama bucket untuk blob riwayat proyek
OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET=overleaf-project-blobs

# Nama bucket untuk potongan riwayat
OVERLEAF_HISTORY_CHUNKS_BUCKET=overleaf-chunks

# Kunci untuk pengguna riwayat
OVERLEAF_HISTORY_S3_ACCESS_KEY_ID=...

# Rahasia untuk pengguna riwayat
OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY=...

# Region bucket yang Anda pilih saat membuat bucket.
OVERLEAF_HISTORY_S3_REGION=""
```

#### Saat menggunakan opsi yang di-host sendiri

```bash
# Aktifkan backend S3 untuk filestore
OVERLEAF_FILESTORE_BACKEND=s3

# Nama bucket untuk file proyek
OVERLEAF_FILESTORE_USER_FILES_BUCKET_NAME=overleaf-user-files

# Nama bucket untuk file template
OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME=overleaf-template-files

# Kunci untuk pengguna filestore
OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID=...

# Rahasia untuk pengguna filestore
OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY=...

# Endpoint penyedia S3
OVERLEAF_FILESTORE_S3_ENDPOINT=http://10.10.10.10:9000

# Pengalamatan bucket gaya path. Kemungkinan besar Anda perlu menyetelnya ke "true".
OVERLEAF_FILESTORE_S3_PATH_STYLE="true"

# Region bucket. Kemungkinan besar Anda tidak perlu mengonfigurasikannya.
OVERLEAF_FILESTORE_S3_REGION=""

# Aktifkan backend S3 untuk riwayat
OVERLEAF_HISTORY_BACKEND=s3

# Nama bucket untuk blob riwayat proyek
OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET=overleaf-project-blobs

# Nama bucket untuk potongan riwayat
OVERLEAF_HISTORY_CHUNKS_BUCKET=overleaf-chunks

# Kunci untuk pengguna riwayat
OVERLEAF_HISTORY_S3_ACCESS_KEY_ID=...

# Rahasia untuk pengguna riwayat
OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY=...

# Endpoint penyedia S3
OVERLEAF_HISTORY_S3_ENDPOINT=http://10.10.10.10:9000

# Pengalamatan bucket gaya path. Kemungkinan besar Anda perlu menyetelnya ke "true".
OVERLEAF_HISTORY_S3_PATH_STYLE="true"

# Region bucket. Kemungkinan besar Anda tidak perlu mengonfigurasikannya.
OVERLEAF_HISTORY_S3_REGION=""
```

### Penyiapan MINIO

{% hint style="info" %}
`MINIO_ROOT_USER` dan `MINIO_ROOT_PASSWORD` adalah kredensial root dari instance MINIO.
{% endhint %}

Silakan ikuti [dokumentasi resmi](https://min.io/docs/minio/linux/reference/minio-mc.html#quickstart) untuk memperoleh salinan `mc`.

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

# Letakkan isi kebijakan dari bagian sebelumnya di dalam
# file json yang sesuai, policy-filestore.json dan policy-history.json.

# Pengingat: Ganti nama bucket dan kredensial sesuai kebutuhan.

# bucket, pengguna, dan kebijakan 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, pengguna, dan kebijakan riwayat
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/id/konfigurasi/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.
