ServerAdmin.ru
31.6K subscribers
855 photos
57 videos
23 files
3K links
Авторская информация о системном администрировании.

Информация о рекламе: @srv_admin_reklama_bot
Автор: @zeroxzed

Второй канал: @srv_admin_live
Сайт: serveradmin.ru

Ресурс включён в перечень Роскомнадзора
Download Telegram
Я неоднократно рассказывал про бесплатную реализацию своего сервера для S3 хранилища на базе MinIO. Это наиболее популярный и чуть ли не единственный массовый сервер для этих задач. Я других таких же простых даже и не знаю. Если для каких-то больших многосерверных систем есть реализации кластера типа Ceph и его Object Gateway, или аналогов, то для одиночного сервера или небольшого кластера я ничего другого ни разу не видел и не слышал. Все ставили по умолчанию MinIO.

Разработчики решили эту популярность монетизировать и из бесплатной версии убрали веб интерфейс для управления сервером. Можно только объекты смотреть. Для управления остались только консольные команды. В целом, ничего особенного в этом нет. Стандартный подход для двух редакций: бесплатная и платная. Но так как изначально этот веб интерфейс был доступен, стало немного обидно и неудобно.

Последняя версия, где есть полнофункциональный веб интерфейс - от 22 апреля. Скачать и запустить можно так:

# wget -O minio https://dl.min.io/server/minio/release/linux-amd64/archive/minio.RELEASE.2025-04-22T22-12-26Z
# chmod +x minio
# mkdir /mnt/data
# ./minio server /mnt/data

Дальше идём на порт сервера 9000 и всё настраиваем через веб интерфейс, используя учётку minioadmin / minioadmin. Всё максимально быстро и просто. MinIO используется во множестве сборок программных продуктов, где нужна функциональность S3.

В целом, ничего критичного не произошло. Если вы нечасто меняете настройки, то можно и через CLI это делать. Для этого нужно воспользоваться MinIO Console, которая запускается командой mc. Неудобно, так как пересекается с Midnight Commander. Консоль придётся поставить отдельно. По ссылкам есть инструкция для установки.

Какие есть альтернативы новой урезанной версии:

1️⃣ OpenMaxIO - форк урезанного официального веб интерфейса, который теперь называется object-browser. В него вернули все удалённые возможности официального UI. Этот форк сделан энтузиастами и к команде MinIO никакого отношения не имеет.

2️⃣ RustFS - новый альтернативный сервер, аналог MinIO, реализующий ту же функциональность. Проект стартовал в июле, вскоре после новостей MinIO. В настоящий момент доступна только альфа версия, но проект активно развивается. Уже было 48 промежуточных релизов. Пилят, судя по китайскому языку на сайте, китайцы. Я пока не пробовал его, не знаю, что у них получилось. Обещают такую же простоту настройки, но более производительный сервер. Посмотрим. Если кто-то уже пробовал, дайте, пожалуйста, боратную связь.

Дополнительно рекомендую посмотреть интересное выступление на тему кластера MinIO:
Свой распределённый S3 на базе MinIO — практический опыт наступания на грабли / Алексей Плетнёв

#S3
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍94👎2
На канале в разное время было много упоминаний про консольную утилиту для бэкапа restic. Она популярна в последнее время, много статей и роликов видел с её участием. Не буду много про неё рассказывать, перечислю только основные плюсы. А далее покажу один практический пример.

▪️Есть под все популярные системы, состоит из одного бинарника на go, есть в базовых репозиториях.
▪️Все данные по умолчанию шифруются.
▪️Формат хранения данных в виде снепшотов с дедупликацией.
▪️Поддерживает хранилища: локальная директория, SFTP, S3, свой сервер rest с доступом по HTTP и некоторые другие.
▪️Встроенная проверка целостности данных.
▪️Все параметры можно передавать ключами и переменными.

Я покажу далее, как забэкапить данные с помощью restic в S3 бакет на примере хостера Selectel. Настройка будет плюс-минус идентичной для любого облачного провайдера. У меня S3 бэкапы лежат там, поэтому показываю на данном примере. У хостеров может быть немного запутанной схема предоставления доступа к бакетам, так что иногда приходится повозиться немного, если делаешь впервые.

1️⃣ Создаю бакет у провайдера. В данном случае иду в раздел Инфраструктура S3 Бакеты. Создаю новый:
◽️Тип бакета: Приватный
◽️Класс хранения: Холодное хранение
◽️Версионирование: отключено (restic сам будет заниматься версионированием)
◽️Тип адресации: vHosted

Далее в разделе Аккаунт Сервисные пользователи добавляю нового пользователя, роль - Пользователь S3, Проект - выбранный проект, где создан бакет. Тут же перехожу во вкладку Доступ и создаю S3-ключи. Нужно записать Access key и Secret key. Они нам понадобятся при настройке Restic.

Возвращаюсь в настройки бакета, перехожу на вкладку Политика доступа, создаю политику, где выбираю полный доступ для только что созданного пользователя.

Бакет сделали, доступ настроили. Я получил следующие данные:
S3_HOST=https://s3.ru-1.storage.selcloud.ru
S3_BUCKET=restic55
ACCESS_KEY_ID=XXXXXXXXXX
SECRET_ACCESS_KEY=YYYYYYYYYY

2️⃣ Идём на сервер и устанавливаем Restic:

# apt install restic

Параметры доступа к S3 и сам пароль от бэкапов задаются переменными окружения. Введём их, а перед этим отключим сохранение history, чтобы они там не осели:

# unset HISTFILE
# export AWS_ACCESS_KEY_ID=XXXXXXXXXX
# export AWS_SECRET_ACCESS_KEY=YYYYYYYYYY
# export RESTIC_PASSWORD="ZZZZZZZZZZ"

Пароль RESTIC_PASSWORD нужно обязательно сохранить. Без него бэкапы не расшифровать, доступа к ним не будет. Инициализируем репозиторий:

# restic init -r s3:https://s3.ru-1.storage.selcloud.ru/restic55

Теперь туда можно бэкапить:

# restic backup -r s3:https://s3.ru-1.storage.selcloud.ru/restic55 /var/www

Проверяем список бэкапов. В терминологии restic это snapshots:

# restic snapshots -r s3:https://s3.ru-1.storage.selcloud.ru/restic55
....
18eba378 2025-09-01 18:59:24 debian12-vm       /var/www
....

У нас только один snapshot. Восстановим его:

# mkdir /tmp/restore
# restic restore 18eba378 -r s3:https://s3.ru-1.storage.selcloud.ru/restic55 --target /tmp/restore

В директории /tmp/restore будут файлы этого снепшота.

Restic может автоматически ротировать снепшоты. Для этого у него есть набор ключей с гибкими настройками. Например:

🔹--keep-last N – последние N бэкапов
🔹--keep-daily N – для последних N дней, в которых есть один или несколько снимков, сохранять только самый последний снимок за каждый день
🔹--keep-within-daily duration – сохранять по одному последнему снимку, сделанному в течение указанного duration.

И так далее для разных временных отрезков. Наглядный типовой пример политики хранения:

--keep-within-daily 7d --keep-within-weekly 1m --keep-within-monthly 1y

Храним 7 дневных бэкапов, 4 недельных, 12 месячных.

Вы можете написать свои bash костыли для Restic, а можете взять что-то готовое. Например, вот репозиторий, где есть скрипт для бэкапа в S3 с логированием, с некоторыми проверками, с хранением параметров и пароля доступа в отдельных файлах.

🌐 Сайт / Исходники / Документация

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#backup #restic #s3
Please open Telegram to view this post
VIEW IN TELEGRAM
👍127👎4