К содержимому
TolkTak
RU EN
Скачать
На этой странице

Хранилище S3

Загруженные файлы (вложения, голосовые сообщения и аватары) по умолчанию хранятся в каталоге данных сервера. Если задан бакет S3, сервер хранит их там. Отдаёт файлы приложению по-прежнему сам сервер, поэтому бакет не обязан быть доступен из интернета, а доступ работает как раньше: файл может скачать любой, у кого есть ссылка. Имена и размеры файлов остаются в базе, в бакет переезжает только содержимое.

Строка журнала tolktak-server listening показывает files=s3 или files=disk.

Garage в установке через Compose

Установка через Compose запускает Garage, лёгкий S3-сервер, с бакетом tolktak. Настраивать ничего не нужно: ключи берутся из .env. Файлы хранятся в томе garage-data, метаданные Garage — в garage-meta. Garage доступен только другим сервисам установки.

S3 провайдера

Создайте бакет и ключ доступа с правом читать и записывать в нём объекты, затем задайте переменные:

Переменная Пример Назначение
TOLKTAK_S3_BUCKET tolktak Имя бакета. Если задано, файлы хранятся в S3.
TOLKTAK_S3_ENDPOINT https://<account id>.r2.cloudflarestorage.com Адрес S3 провайдера. Для AWS S3 оставьте пустым. Для сервера в закрытой сети допустим http://.
TOLKTAK_S3_REGION auto Регион бакета. Пусто — us-east-1.
TOLKTAK_S3_ACCESS_KEY, TOLKTAK_S3_SECRET_KEY Ключ доступа. Если задан бакет, обязательны оба.
Провайдер TOLKTAK_S3_ENDPOINT TOLKTAK_S3_REGION
AWS S3 пусто регион бакета, например eu-central-1
Cloudflare R2 https://<account id>.r2.cloudflarestorage.com auto
Backblaze B2 https://s3.<регион>.backblazeb2.com регион из адреса, например eu-central-003
Другие S3-совместимые серверы адрес сервера как требует сервер

Сервер обращается к объектам по пути <endpoint>/<bucket>/<id файла>; все перечисленные провайдеры это поддерживают.

  • Compose: задайте переменные в .env и уберите garage из COMPOSE_PROFILES, затем выполните docker compose up -d и docker compose rm -sf garage.
  • docker run: добавьте переменные через -e.

Оставьте бакет закрытым. Файлы называются случайными идентификаторами и после загрузки не меняются.

Файлы на диске

В установке через Compose задайте в .env пустое TOLKTAK_S3_BUCKET= и уберите garage из COMPOSE_PROFILES. Файлы будут храниться в томе data вместе с остальными данными сервера.

Перенос существующих файлов

tolktak-server copy-files загружает файлы из каталога данных (TOLKTAK_DATA_DIR/files) в настроенный бакет. Файлы, которые уже есть в бакете, пропускаются, поэтому после обрыва команду можно запустить снова. Локальные файлы она не трогает; удалите их, когда убедитесь, что сервер работает с бакетом.

Переезд с сервера docker run на установку через Compose описан в разделе «Переезд с docker run». Для установки через Compose, которая хранила файлы на диске:

docker compose run --rm tolktak copy-files     # после того как заданы переменные TOLKTAK_S3_*
docker compose up -d

Команда берёт настройки бакета из тех же переменных, что и сервер.

Резервные копии

С Garage сохраняйте тома garage-data и garage-meta, как описано в инструкции по обслуживанию. У провайдера используйте версионирование или репликацию бакета либо копируйте его инструментом вроде rclone.

Исходник страницы