После установки MinIO нужно создать структуру хранения: buckets (аналог директорий верхнего уровня), политики доступа и учётные записи для сотрудников.
# Устанавливаем MinIO Client (mc)
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/
# Добавляем наш сервер
mc alias set mediaforce https://s3.mediaforce.local:9000 \
minioadmin 'M1n10Str0ng!P@ss2026' --insecure
# Создаём buckets по типам проектов
mc mb mediaforce/projects-active # Активные проекты
mc mb mediaforce/projects-archive # Завершённые проекты
mc mb mediaforce/raw-media # RAW-фотографии и видеоисходники
mc mb mediaforce/renders # Финальные рендеры
mc mb mediaforce/shared-assets # Общие ресурсы (шрифты, текстуры, LUT)
mc mb mediaforce/client-delivery # Выдача клиентам (временный)
# Проверяем
mc ls mediaforce/
# [2026-02-15 10:30:00 MSK] 0B projects-active/
# [2026-02-15 10:30:01 MSK] 0B projects-archive/
# [2026-02-15 10:30:02 MSK] 0B raw-media/
# [2026-02-15 10:30:03 MSK] 0B renders/
# [2026-02-15 10:30:04 MSK] 0B shared-assets/
# [2026-02-15 10:30:05 MSK] 0B client-delivery/
# Включаем versioning для активных проектов
mc version enable mediaforce/projects-active
mc version enable mediaforce/shared-assets
Мы создали три роли: дизайнеры (полный доступ к проектам), менеджеры (только чтение + client-delivery), стажёры (только shared-assets):
# Политика для дизайнеров — полный доступ ко всему кроме admin
cat > /tmp/policy-designer.json << 'EOF'
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject",
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": [
"arn:aws:s3:::projects-active/*",
"arn:aws:s3:::projects-active",
"arn:aws:s3:::projects-archive/*",
"arn:aws:s3:::projects-archive",
"arn:aws:s3:::raw-media/*",
"arn:aws:s3:::raw-media",
"arn:aws:s3:::renders/*",
"arn:aws:s3:::renders",
"arn:aws:s3:::shared-assets/*",
"arn:aws:s3:::shared-assets"
]
}
]
}
EOF
# Политика для менеджеров — чтение + управление client-delivery
cat > /tmp/policy-manager.json << 'EOF'
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:ListBucket"],
"Resource": [
"arn:aws:s3:::renders/*",
"arn:aws:s3:::renders"
]
},
{
"Effect": "Allow",
"Action": ["s3:*"],
"Resource": [
"arn:aws:s3:::client-delivery/*",
"arn:aws:s3:::client-delivery"
]
}
]
}
EOF
# Загружаем политики
mc admin policy create mediaforce designer /tmp/policy-designer.json
mc admin policy create mediaforce manager /tmp/policy-manager.json
# Создаём пользователей
mc admin user add mediaforce designer01 'D3s1gn3r!Pass'
mc admin user add mediaforce manager01 'M@n@g3r!Pass'
# Назначаем политики
mc admin policy attach mediaforce designer --user designer01
mc admin policy attach mediaforce manager --user manager01
# Проверяем доступ
mc alias set test-designer https://s3.mediaforce.local:9000 \
designer01 'D3s1gn3r!Pass' --insecure
mc ls test-designer/projects-active/
# OK — доступ есть
mc ls test-designer/client-delivery/
# ERROR — Access Denied (нет в политике дизайнера)