S3 совместимое хранилище на Synology NAS с помощью RustFS

Всем привет!!!

Если вам нужна высокопроизводительная система объектного хранилища полностью совместимая с 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.

Подписаться
Уведомить о
guest
2 Комментарий
Старые
Новые
Межтекстовые Отзывы
Посмотреть все комментарии