> 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/vi/cau-hinh/overleaf-toolkit/s3.md).

# S3

{% hint style="info" %}
Tài liệu này bao gồm việc thiết lập S3 trong Server CE và Overleaf Pro. Một [hướng dẫn riêng](/on-premises/vi/bao-tri/s3-migration.md) có thể được tìm thấy về việc di chuyển dữ liệu hiện có sang bộ lưu trữ tương thích S3.
{% endhint %}

## Khi nào nên cân nhắc sử dụng S3 để lưu trữ dữ liệu

Đối với các phiên bản có ít hơn 1000 chỗ ngồi, chúng tôi khuyến nghị sử dụng lưu trữ đĩa cục bộ với sao lưu [nhất quán thường xuyên](https://docs.overleaf.com/on-premises/maintenance/data-and-backups#performing-a-consistent-backup).

Đối với các phiên bản lớn hơn có hơn 1000 chỗ ngồi và đạt đến giới hạn của bộ lưu trữ cục bộ (dung lượng hoặc thông lượng), chúng tôi khuyến nghị sử dụng backend lưu trữ đối tượng tương thích S3 thay vì các giải pháp lưu trữ qua mạng khác như NFS.

## Các tùy chọn lưu trữ đối tượng tương thích S3

Dưới đây là các tùy chọn phổ biến nhất cho lưu trữ đối tượng tương thích S3:

* [AWS S3](https://aws.amazon.com/s3/), được quản lý, chúng tôi khuyên bạn chọn AWS S3 khi chạy Overleaf CE/Server Pro trên AWS
* [MINIO](https://min.io/), tự lưu trữ
* [Ceph](https://ceph.io/en/), tự lưu trữ
* Các nhà cung cấp dịch vụ lưu trữ khác cũng có một dạng lưu trữ đối tượng tương thích S3 được quản lý; bạn có thể muốn dùng các dịch vụ này thay vì tự vận hành khi đã chạy Overleaf CE/Server Pro tại một nhà cung cấp như vậy.

## Các lưu ý về độ trễ khi chọn lưu trữ đối tượng tương thích S3

Độ trễ giữa phiên bản Server CE/Server Pro và bộ lưu trữ đối tượng tương thích S3 của bạn là một yếu tố lớn ảnh hưởng đến thời gian hoàn tất quá trình di chuyển. Độ trễ cũng tác động đến hiệu năng tải tệp lên trong Server CE/Server Pro, và tải tệp xuống chậm cũng có thể ảnh hưởng lớn đến thời gian biên dịch PDF. Chúng tôi khuyên bạn giảm thiểu khoảng cách địa lý giữa phiên bản Server CE/Server Pro và bộ lưu trữ đối tượng tương thích S3. Trong môi trường được quản lý, điều này có nghĩa là cung cấp một bucket ở cùng khu vực, còn với giải pháp tại chỗ, hãy chạy cả hai trên cùng một khuôn viên.

## Thiết lập S3

Chúng ta cần bốn "bucket" và hai tài khoản người dùng bị hạn chế.

{% hint style="warning" %}
Các bucket nên **không** có thể truy cập công khai
{% 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>Cách sử dụng</td><td>Dịch vụ</td><td>Trước đây trong <code>/var/lib/overleaf/data</code></td></tr><tr><td><code>overleaf-user-files</code></td><td>tệp người dùng dự án</td><td>filestore</td><td><code>user_files</code></td></tr><tr><td><code>overleaf-template-files</code></td><td>tệp mẫu</td><td>filestore</td><td><code>template_files</code></td></tr><tr><td><code>overleaf-project-blobs</code></td><td>blob lịch sử dự án</td><td>lịch sử và kho lưu trữ chỉ đọc</td><td><code>history/overleaf-project-blobs</code></td></tr><tr><td><code>overleaf-chunks</code></td><td>các khối lịch sử</td><td>history</td><td><code>history/overleaf-chunks</code></td></tr></tbody></table>

Bạn có thể muốn/cần chọn một tên khác, hãy nhớ sử dụng các bucket tùy chỉnh trong tất cả các lệnh.

Phần sau sẽ dùng các chỗ giữ chỗ cho thông tin xác thực thực tế:

<table><thead><tr><th width="431">Biến môi trường</th><th>Mô tả</th></tr></thead><tbody><tr><td><code>OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID</code></td><td>Khóa truy cập/tên người dùng của người dùng bị hạn chế của dịch vụ filestore.</td></tr><tr><td><code>OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY</code></td><td>Khóa bí mật/mật khẩu của người dùng bị hạn chế của dịch vụ filestore.</td></tr><tr><td><code>OVERLEAF_HISTORY_S3_ACCESS_KEY_ID</code></td><td>Khóa truy cập/tên người dùng của người dùng bị hạn chế của dịch vụ lịch sử.</td></tr><tr><td><code>OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY</code></td><td>Khóa bí mật/mật khẩu của người dùng bị hạn chế của dịch vụ lịch sử.</td></tr></tbody></table>

Server CE và Server Pro chỉ cần một bộ quyền nhỏ trên mỗi bucket:

* tạo đối tượng
* lấy đối tượng
* xóa đối tượng
* liệt kê bucket

### Chính sách truy cập

Đây là ví dụ về chính sách cho người dùng 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/*"
    }
  ]
}
```

Đây là ví dụ về chính sách cho người dùng lịch sử:

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

### Tổng quan về các biến

#### Khi sử dụng AWS S3

```bash
# Bật backend S3 cho filestore
OVERLEAF_FILESTORE_BACKEND=s3

# Tên bucket cho tệp dự án
OVERLEAF_FILESTORE_USER_FILES_BUCKET_NAME=overleaf-user-files

# Tên bucket cho tệp mẫu
OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME=overleaf-template-files

# Khóa cho người dùng filestore
OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID=...

# Bí mật cho người dùng filestore
OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY=...

# Khu vực bucket mà bạn đã chọn khi tạo các bucket.
OVERLEAF_FILESTORE_S3_REGION=""

# Bật backend S3 cho lịch sử
OVERLEAF_HISTORY_BACKEND=s3

# Tên bucket cho các blob lịch sử dự án
OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET=overleaf-project-blobs

# Tên bucket cho các khối lịch sử
OVERLEAF_HISTORY_CHUNKS_BUCKET=overleaf-chunks

# Khóa cho người dùng lịch sử
OVERLEAF_HISTORY_S3_ACCESS_KEY_ID=...

# Bí mật cho người dùng lịch sử
OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY=...

# Khu vực bucket mà bạn đã chọn khi tạo các bucket.
OVERLEAF_HISTORY_S3_REGION=""
```

#### Khi sử dụng tùy chọn tự lưu trữ

```bash
# Bật backend S3 cho filestore
OVERLEAF_FILESTORE_BACKEND=s3

# Tên bucket cho tệp dự án
OVERLEAF_FILESTORE_USER_FILES_BUCKET_NAME=overleaf-user-files

# Tên bucket cho tệp mẫu
OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME=overleaf-template-files

# Khóa cho người dùng filestore
OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID=...

# Bí mật cho người dùng filestore
OVERLEAF_FILESTORE_S3_SECRET_ACCESS_KEY=...

# Endpoint của nhà cung cấp S3
OVERLEAF_FILESTORE_S3_ENDPOINT=http://10.10.10.10:9000

# Kiểu định địa chỉ bucket theo đường dẫn. Nhiều khả năng bạn cần đặt giá trị này thành "true".
OVERLEAF_FILESTORE_S3_PATH_STYLE="true"

# Khu vực bucket. Nhiều khả năng bạn không cần cấu hình mục này.
OVERLEAF_FILESTORE_S3_REGION=""

# Bật backend S3 cho lịch sử
OVERLEAF_HISTORY_BACKEND=s3

# Tên bucket cho các blob lịch sử dự án
OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET=overleaf-project-blobs

# Tên bucket cho các khối lịch sử
OVERLEAF_HISTORY_CHUNKS_BUCKET=overleaf-chunks

# Khóa cho người dùng lịch sử
OVERLEAF_HISTORY_S3_ACCESS_KEY_ID=...

# Bí mật cho người dùng lịch sử
OVERLEAF_HISTORY_S3_SECRET_ACCESS_KEY=...

# Endpoint của nhà cung cấp S3
OVERLEAF_HISTORY_S3_ENDPOINT=http://10.10.10.10:9000

# Kiểu định địa chỉ bucket theo đường dẫn. Nhiều khả năng bạn cần đặt giá trị này thành "true".
OVERLEAF_HISTORY_S3_PATH_STYLE="true"

# Khu vực bucket. Nhiều khả năng bạn không cần cấu hình mục này.
OVERLEAF_HISTORY_S3_REGION=""
```

### Thiết lập MINIO

{% hint style="info" %}
`MINIO_ROOT_USER` và `MINIO_ROOT_PASSWORD` là thông tin xác thực gốc của phiên bản MINIO.
{% endhint %}

Vui lòng làm theo [tài liệu chính thức](https://min.io/docs/minio/linux/reference/minio-mc.html#quickstart) để lấy một bản sao của `mc`.

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

# Đặt nội dung của các chính sách từ phần trước vào
# các tệp json tương ứng policy-filestore.json và policy-history.json.

# Nhắc nhở: Hãy thay thế tên bucket và thông tin xác thực cho phù hợp.

# bucket, người dùng và chính sách của 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, người dùng và chính sách của lịch sử
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/vi/cau-hinh/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.
