Всем привет!!!
Если когда-нибудь вам нужно было S3 совместимое хранилище или может понадобиться в будущем, то знайте, что есть статья как установить S3 совместимое хранилище на Synology NAS с помощью MinIO.
Введение
Очень много программного обеспечения для резервных копий поддерживают S3-совместимое хранилище. Например, плагины wordpress. Некоторые плагины CDN так же используют S3-совместимое хранилище. Так же S3 хранилище поддерживает Synology Hyper Backup. В общем каждый решит сам для чего ему это нужно. Я же после вводной части сосредоточусь на установке S3 совместимое хранилища на Synology NAS с помощью MinIO. По итогу у вас будет Web интерфейс управления S3 хранилищем и API для его управления и наполнения.
S3-совместимое хранилище — это объектное хранилище данных, которое поддерживает протокол взаимодействия Amazon S3 (Simple Storage Service). Это означает, что такие хранилища могут использовать API и инструменты, разработанные для работы с Amazon S3, что обеспечивает совместимость с широким спектром приложений и сервисов.
S3-совместимые хранилища часто используются для:
- Хранения больших объемов данных (например, медиафайлов, логов, резервных копий).
- Интеграции с облачными приложениями.
- Построения распределенных систем хранения.
MinIO — это высокопроизводительное, распределенное объектное хранилище данных с открытым исходным кодом, которое полностью совместимо с API Amazon S3. Оно разработано для работы с современными облачными и контейнеризированными приложениями, обеспечивая высокую производительность, масштабируемость и простоту использования.
Конечно, можно купить S3 хранилище на хостинге, но лично меня цена не порадовала. Например, на хостинге reg.ru за 1000Гбайт просят 2160 рублей и это надо сказать еще дешево, т.к. исходящий трафик бесплатный. Кстати, по промо-коду 9B29-F41D-CD32-5243 вы получите скидку 5% на заказ домена или хостинга в Рег.ру

В общем, когда есть Synology, тогда выбора больше и можно сделать собственное S3 совместимое хранилище на Synology NAS с помощью MinIO на много терабайт.
Единственным условие является поддержка Container Manager на вашем Synology NAS. Это как правило устройства с процессорами x86 и маркировкой плюс(+) в конце названия модели.
Подготовка
В папке docker создайте каталог minio, а в ней папку data. В последней будут лежать все файлы Buckets S3-совместимого хранилища. Поэтому, возможно, вы захотите разместить эту папку в другом месте. Это возможно, просто имейте в виду, что тогда нужно дать этой папке доступ группе everyone на чтение и запись, что бы с правами не было проблем.

Далее вам понадобится файл docker compose, который можно взять ниже. В этой конфигурации вам нужно заменить https://minio.XXX.synology.me и https://s3.XXX.synology.me на свои значения. Первое нужно для WEB консоли, а второе для передачи данных. Порты 9090 и 9091 можно заменить по вашему выбору.
services:
minio:
image: minio/minio:latest
container_name: minio
restart: unless-stopped
volumes:
- ./data:/data
ports:
- 9090:9090
- 9091:9091
environment:
- MINIO_ROOT_USER=sadmin
- MINIO_ROOT_PASSWORD=bafista123
- MINIO_BROWSER_REDIRECT_URL=https://minio.XXX.synology.me
- MINIO_SERVER_URL=https://s3.XXX.synology.me
command: server /data --console-address ":9090" --address=":9091"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9090/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
Установка
Затем откройте Container Manager и создайте новый проект как показано на скриншотах ниже. После создания и запуска проекта должно выйти сообщение exit code 0 означающее, что проект создан успешно.


Обратный прокси
Перейдите в панель управления, портал для входа, дополнительно и откройте обратный прокси. Нужно создать два правила обратного прокси для https://minio.XXX.synology.me с портом 9090 и https://s3.XXX.synology.me с портом 9091. Не забудьте создать два правила WebSocket и установите таймеры на 600 секунд. Все показано на картинках ниже.




WEB консоль
Для доступа в WEB консоль S3-совместимого хранилища на базе MiniO откройте https://minio.XXX.synology.me и введите логин и пароль, который указывали в файле docker compose на этапе подготовки.


Создайте первый Backet, только учитывайте, что он должен называться английскими маленькими буквами


Для доступа к хранилищу по S3 совместимому протоколу нужно создать ключи. Перейдите в соответствующий раздел и выполните это действие как показано на картинке ниже. Рекомендую скачать файл ключей, т.к. узнать их, если вы закроете это окно будет невозможно. Хотя конечно можно будет создать новые.


Подключение к S3 хранилищу
Для подключения к S3 хранилищу я буду использовать Synology Hyper Backup, но вы можете использовать любую утилиту, которая поддерживает S3. Эта очень многофункциональная и продвинутая утилита для резервного копирования данных и настроек приложений Synology. Более подробно о ней я рассказывал тут: Резервное копирование и восстановление в Synology
В целом все просто. Создаем новую задачу резервного копирования и указываем S3 хранилище. Затем пользовательский url адрес в который вписываем https://s3.XXX.synology.me. Версию v4 и формат указываем формат пути. Затем вбиваем ключи от хранилища, выбираем ранее созданный Buckets и придумываем название папки, куда будут складываться резервные копии. В итоге все должно получиться.




Если перейти в WEB интерфейс MiniO, то можно увидеть сколько места занимает резервная копия в данном Buckets

Минусы и плюсы
К минусам можно отнести тот факт, что если вы захотите скачать папку некоторого большого размера с WEB интерфейса MiniO, то вас будет ждать некоторое разочарование. Дело в том, что для скачивания папки MiniO, как и положено будет ее архивировать в zip архив и только потом отдаст ее вашему браузеру на скачивание. Как вы понимаете у Synology энергоэффективные процессоры и сжатие будет очень долгим, особенно если мы говорим о сотнях или тысячах гигабайт.

Но тут есть момент, который решает данную проблему. Дело в том, что все файлы в Buckets просто лежат в папке на Synology и их без проблемно можно скачать или перекинуть прям через File Station

Итог
В итоге получаем S3 совместимое хранилище на Synology NAS с помощью MinIO и можем без проблемно создавать Buckets как приватные так и общие, сохранять любые объемы данных и получать к ним доступ как локально, так и через интернет.