> 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/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 mengenai migrasi data yang sudah ada ke penyimpanan yang kompatibel dengan S3.
{% endhint %}

## Kapan perlu mempertimbangkan penggunaan S3 untuk penyimpanan data

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

Untuk instans yang lebih besar dengan lebih dari 1000 seat yang mencapai batas penyimpanan lokalnya (ukuran atau throughput), kami merekomendasikan penggunaan backend penyimpanan objek yang kompatibel dengan S3 dibandingkan solusi penyimpanan berbasis jaringan lainnya 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 instans Server CE/Server Pro dan penyimpanan objek yang kompatibel dengan S3 Anda merupakan salah satu faktor besar dalam waktu yang diperlukan untuk menyelesaikan migrasi. Latensi juga memengaruhi kinerja unggah file di Server CE/Server Pro, dan unduhan file yang lambat dapat berdampak besar pada waktu kompilasi PDF juga. Kami menyarankan untuk meminimalkan jarak geografis antara instans Server CE/Server Pro Anda dan penyimpanan objek yang kompatibel dengan S3. Dalam lingkungan terkelola, ini berarti menyediakan bucket di wilayah yang sama, dan untuk solusi di lokasi sendiri, menjalankan keduanya di kampus yang sama.

## Penyiapan S3

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

{% hint style="warning" %}
Bucket harus **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 templat</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 dalam semua perintah.

Berikut ini akan menggunakan placeholder untuk kredensial yang 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>Kunci akses/nama pengguna dari pengguna terbatas layanan filestore.</td></tr><tr><td><code>OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY</code></td><td>Kunci rahasia/kata sandi dari pengguna terbatas layanan filestore.</td></tr><tr><td><code>OVERLEAF_HISTORY_S3_ACCESS_KEY_ID</code></td><td>Kunci akses/nama pengguna dari pengguna terbatas layanan history.</td></tr><tr><td><code>OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY</code></td><td>Kunci rahasia/kata sandi dari pengguna terbatas layanan history.</td></tr></tbody></table>

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

* buat objek
* ambil objek
* hapus objek
* daftar bucket

### Kebijakan Akses

Berikut adalah contoh tampilan kebijakan untuk pengguna 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/*"
    }
  ]
}
```

Berikut adalah contoh tampilan kebijakan untuk pengguna 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/*"
    }
  ]
}
```

### 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 templat
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=...

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

# Aktifkan backend S3 untuk history
OVERLEAF_HISTORY_BACKEND=s3

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

# Nama bucket untuk potongan history
OVERLEAF_HISTORY_CHUNKS_BUCKET=overleaf-chunks

# Kunci untuk pengguna history
OVERLEAF_HISTORY_S3_ACCESS_KEY_ID=...

# Rahasia untuk pengguna history
OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY=...

# Wilayah 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 templat
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"

# Wilayah bucket. Kemungkinan besar Anda tidak perlu mengonfigurasinya.
OVERLEAF_FILESTORE_S3_REGION=""

# Aktifkan backend S3 untuk history
OVERLEAF_HISTORY_BACKEND=s3

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

# Nama bucket untuk potongan history
OVERLEAF_HISTORY_CHUNKS_BUCKET=overleaf-chunks

# Kunci untuk pengguna history
OVERLEAF_HISTORY_S3_ACCESS_KEY_ID=...

# Rahasia untuk pengguna history
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"

# Wilayah bucket. Kemungkinan besar Anda tidak perlu mengonfigurasinya.
OVERLEAF_HISTORY_S3_REGION=""
```

### Penyiapan MINIO

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

Silakan ikuti [dokumentasi resmi](https://min.io/docs/minio/linux/reference/minio-mc.html#quickstart) untuk mendapatkan 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 masing-masing policy-filestore.json dan policy-history.json.

# Pengingat: Ganti nama bucket dan kredensial sesuai dengan itu.

# 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 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://overleaf-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.
