Перейти к содержимому

Хранилище

Файлы адресуются по хешу содержимого: одинаковые не задваиваются, а лаунчер докачивает только изменившееся. Где физически лежат байты, задаёт раздел storage.

Файловая система

Локальный диск — самый простой вариант, подходит для одного сервера. Байты раздаёт nginx.

{
"storage": {
"backend": "fs",
"config": { "root": "/var/lib/laminara/objects", "xaccelPrefix": "/internal-objects/" }
}
}

xaccelPrefix включает раздачу через X-Accel-Redirect силами nginx — см. Продакшен.

S3-совместимое хранилище

Для нескольких серверов, отказоустойчивости или раздачи через CDN. Лаунчер качает объекты напрямую по presigned-ссылкам — байты не идут через сервер.

{
"storage": {
"backend": "s3",
"config": {
"endpoint": "s3.example.com",
"region": "us-east-1",
"bucket": "laminara",
"accessKeyId": "...",
"secretAccessKey": "...",
"pathStyle": true
}
}
}

pathStyle включите для self-hosted хранилищ (Garage, SeaweedFS, MinIO); большинству облаков он не нужен. secure управляет HTTPS и по умолчанию включён.

Что выбрать

Garage

Лёгкий self-hosted S3 на Rust, без внешних зависимостей, хорошо тянет разнесённые по географии узлы. Разумный выбор по умолчанию для своего хранилища.

SeaweedFS

S3 поверх быстрого хранилища мелких файлов. Силён там, где объектов очень много, — а к сборкам это относится напрямую.

Backblaze B2

Управляемый S3-совместимый сервис с дешёвым egress (особенно в связке с Cloudflare). Когда держать хранилище самому не хочется.