Всем привет!!!
Если вам нужна высокопроизводительная система объектного хранилища полностью совместимая с S3 и к тому же бесплатная на вашем Synology и не только, то вам точно должно подойти RustFS.
Оглавление
Введение
Еще вчера когда заходил разговор про S3 совместимое хранили любой кто был в теме, ответил бы MinIO. Я кстати уже делал материал по этому поводу: S3 совместимое хранилище на Synology NAS с помощью MinIO. Проблема только в том, что с недавнего времени MiniIO стал платным. В бесплатной версии можно управлять через консоль, но на этом все. Люди по всему миру стали искать ему замену и одной из таких замен стал проект RustFS. Правда проект RustFS находится в стадии активной разработки, но в целом вполне пригоден для работы уже сейчас.
RustFS — это высокопроизводительная распределенная система объектного хранения, созданная на Rust — одном из самых любимых языков программирования в мире. RustFS сочетает простоту MinIO с безопасностью памяти и высокой производительностью Rust. Система предлагает полную совместимость с S3, является полностью открытой и оптимизирована для работы с data lakes, искусственным интеллектом и большими данными.
В отличие от других систем хранения, RustFS выпускается под разрешительной лицензией Apache 2.0, избегая ограничений AGPL. Благодаря Rust как основе, RustFS обеспечивает превосходную скорость и безопасные распределенные функции для объектного хранения следующего поколения.
Для чего может понадобиться S3 совместимое хранилище на своем сервере в частности на Synology? На самом деле у S3 хранилища много сценариев использования: хранение больших данных, размещение статического контента для сайтов, резервные копии и многое другое. В общем вопрос зачем каждый задаст себе сам, а я расскажу как установить S3 совместимое хранилище на Synology NAS с помощью RustFS.
Установка
В папке docker создайте каталог rustfs, а в ней папку data и logs. В data будут лежать все файлы Buckets S3-совместимого хранилища. Поэтому, возможно, вы захотите разместить эту папку в другом месте. Это возможно, просто имейте в виду, что тогда нужно дать этой папке доступ группе everyone на чтение и запись, что бы с правами не было проблем.

Теперь перейдите в свойства папки data в раздел разрешения. Сделайте наследуемые разрешения явными и дайте доступ на чтение и запись группе Everyone. В противном случаи вы столкнетесь с проблемами прав доступа к этой папке в контейнере rustfs.


Настало время создать контейнер из docker-comope. Откройте Container Manager и создайте новый проект выбрав название, созданную ранее папку и конфигурацию

Для docker rustfs в проекте используйте следующий docker compose:
Замените rustfs.XXX.synology.me и rustfs-console.XXX.synology.me на ваше значение, а так же замените логин и пароль rustfsadmin
version: "3.9"
services:
# RustFS main service
rustfs:
image: rustfs/rustfs:latest
container_name: rustfs-server
security_opt:
- "no-new-privileges:true"
ports:
- "9000:9000" # S3 API port
- "9001:9001" # Console port
environment:
- RUSTFS_SERVER_DOMAINS=rustfs.XXX.synology.me
- RUSTFS_CONSOLE_DOMAINS=rustfs-console.XXX.synology.me
- RUSTFS_VOLUMES=/data/rustfs0
- RUSTFS_ADDRESS=0.0.0.0:9000
- RUSTFS_CONSOLE_ADDRESS=0.0.0.0:9001
- RUSTFS_CONSOLE_ENABLE=true
- RUSTFS_CORS_ALLOWED_ORIGINS=*
- RUSTFS_CONSOLE_CORS_ALLOWED_ORIGINS=*
- RUSTFS_ACCESS_KEY=rustfsadmin # CHANGEME
- RUSTFS_SECRET_KEY=rustfsadmin # CHANGEME
- RUSTFS_OBS_LOGGER_LEVEL=info
- RUSTFS_TLS_PATH=/opt/tls
# Object Cache
- RUSTFS_OBJECT_CACHE_ENABLE=true
- RUSTFS_OBJECT_CACHE_TTL_SECS=300
volumes:
- ./data:/data/rustfs0
- ./logs:/app/logs
restart: unless-stopped
healthcheck:
test:
[
"CMD",
"sh", "-c",
"curl -f http://127.0.0.1:9000/health && curl -f http://127.0.0.1:9001/rustfs/console/health"
]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
Exit Code: 0 — означает, что проект успешно создался

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

Фаервол
Если у вас включен фаервол на Synology, то нужно дополнительно разрешить сеть проекта, что бы все работало корректно. Напомню, что 16 маска это 255.255.0.0.
Подробнее про настройку фаервола можно узнать в статье Настройка безопасности Synology NAS защищаем данные от внешних угроз

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



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

Вот и все. Теперь вы знаете как установить S3 совместимое хранилище на Synology NAS с помощью RustFS в контейнер docker.

