Skip to content

Storage

Назначение

Сервис файлового хранения платформы. RESTful API для загрузки, скачивания, списка и удаления файлов. Управляет физическим хранением (локальный диск или S3/MinIO) и метаданными в PostgreSQL.

Порты

ПортНазначение
8096HTTP REST API
9010MinIO API (dev)
9011MinIO Console (dev)
  • БД: storage_db

Ключевые возможности

  • Два бэкенда хранения: локальный диск (./storage/category/year/month/) или S3/MinIO
  • 6 категорий файлов: avatars, spaceIcons, documents, commands, commandIcons, runnerArtifact
  • Публичные файлы: avatars, spaceIcons, runnerArtifact (без аутентификации)
  • Приватные файлы: проверка владельца через app-user-id header
  • Service-to-service доступ через SERVICE_TOKEN (обход проверки владельца)
  • Presigned URLs для S3 (срок действия 1 час)
  • Санитизация имён файлов (удаление .., пробелов, /)
  • Пагинация (offset/limit, max 1000), фильтрация (ids[], category), сортировка (created_at/updated_at/size)
  • Swagger UI

Структура БД (таблица files)

КолонкаТипОписание
idCHAR(36) PKUUID
owner_idCHAR(36)Владелец (indexed)
file_nameVARCHAR(255)Имя в хранилище
original_nameVARCHAR(255)Оригинальное имя
mime_typeVARCHAR(100)MIME-тип
sizeBIGINTРазмер в байтах
categoryVARCHAR(50)Категория (indexed)
storage_pathVARCHAR(512)Путь в хранилище
storage_typeVARCHAR(50)local или s3

Конфигурация

ПеременнаяПо умолчаниюОписание
PORT8096Порт сервера
DB_*PostgreSQL
STORAGE_TYPE (env: LOCATION_TYPE)localБэкенд: local или s3
STORAGE_PATH (env: LOCATION_PATH)./storageЛокальный путь
STORAGE_BUCKET (env: LOCATION_BUCKET)S3 bucket (обязателен для s3)
STORAGE_REGION (env: LOCATION_REGION)us-east-1AWS регион
STORAGE_ENDPOINT (env: LOCATION_ENDPOINT)S3 endpoint (для MinIO)
STORAGE_ACCESS_KEY (env: LOCATION_ACCESS_KEY)AWS ключ
STORAGE_SECRET_KEY (env: LOCATION_SECRET_KEY)AWS секрет
STORAGE_MAX_SIZE (env: LOCATION_MAX_SIZE)1073741824 (1GB)Макс. размер
SERVICE_TOKENТокен межсервисного взаимодействия
JWT_SECRETАутентификация