Перейти к содержанию

▍Minio

Minio

Настройка S3-совместимого бэкап-сервер на Minio

Настроим домашний аналог S3 на Minio и будем загружать бэкапы с Duplicati.

Compose для нашего Minio

В моём случае используется Traefik в качестве обратного прокси для маршрутизации трафика внутрь Docker контейнеров. Базовую конфигурацию Traefik можно посмотреть здесь.

nano /srv/docker/docker-compose.yml
version: '3.3'

services:
   minio:
        image: quay.io/minio/minio
        container_name: minio
        restart: always
        command: server /data --address ":9000" --console-address ":9001"
        environment:
          MINIO_ROOT_USER: minio
          MINIO_ROOT_PASSWORD: miniopassword
        healthcheck:
          test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
          interval: 30s
          timeout: 20s
          retries: 3
        volumes:
          - $DIR_DATA/minio:/data
        labels:
          - "traefik.enable=true"
          - "traefik.http.routers.minio.rule=Host(`minio.example.ru`)"
          - "traefik.http.routers.minio.entrypoints=https"
          - "traefik.http.routers.minio.tls=true"
          - "traefik.http.routers.minio.middlewares=WhitelistHome"
          - "traefik.http.services.minio.loadbalancer.server.port=9001"
          - "com.centurylinklabs.watchtower.enable=true"

Запускаем:

docker-compose up -d

Настройка Minio в web-интерфейсе

Переходим по адресу minio.example.ru и вводим minio и miniopassword, указанные в переменных MINIO_ROOT_USER и MINIO_ROOT_PASSWORD.

Minio login

После авторизации в разделе Buckets нажимаем на Create Bucket

Minio

Указывавем имя бакета и создаём его Minio

Теперь переходим в раздел Access Keys и нажимаем на кнопку Create access key:

Minio

Настройка Duplicati

Теперь заходим в web-интерфейс Duplicati, нажимаем на Добавить резервную копию Minio

Вводим имя, задаём кодовую фразу если необходимо зашифровать наш бэкап Minio

В разделе Тип хранилища выбираем S3 совместимый Minio

Сервер - Пользовательский URL - minio:9000
В качестве AWS Access ID указываем Access Key из раздела Access Keys в web-интерфейсе minio. Аналогично AWS Access Key указываем Secret Key.

Minio

Выбираем директорию, которую собираемся бэкапить, в моём случае это папка www с файлами сайтов: Minio

Задаём расписание Minio

Основные параметры можно выставить так Minio

Готово. Можно нажать на Запустить сейчас

Minio

и убедиться, что бэкап проходит корректно и появляются файлы в нашем бакете.

Minio

Полиси пользователя

Для разграничения доступа необходимо добавить полиси для каждого конкретного пользователя, тогда он будет видеть только конкретный бакет, в указанно ниже случае это бакет nextcloud.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "*"
        ]
      },
      "Action": [
        "s3:GetBucketLocation",
        "s3:ListBucket",
        "s3:ListBucketMultipartUploads"
      ],
      "Resource": [
        "arn:aws:s3:::nextcloud"
      ]
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "*"
        ]
      },
      "Action": [
        "s3:AbortMultipartUpload",
        "s3:DeleteObject",
        "s3:GetObject",
        "s3:ListMultipartUploadParts",
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::nextcloud/*"
      ]
    }
  ]
}
К началу