UNRUIN
сайт · данные на этой странице выдуманы
бесплатно на ваших машинах без агентов

Копия, которую
вы видели развёрнутой

Unruin снимает копию, тут же разворачивает её обратно и говорит, если она не развернулась. Ходит по SSH на ваши серверы; ставить на них нечего — движок копирования приезжает сам, одним файлом в кэш пользователя: ни пакетов, ни демонов, ни правок в системе.

  • Страшно не «нет бэкапа». Страшно «бэкап был, а не развернулся» — вот это Unruin и проверяет, каждый раз.
  • Копия уезжает сразу в несколько хранилищ: папка, NAS, S3. Одна полка — это ещё не бэкап.
  • Жаргон движка живёт только в логе запуска. В интерфейсе — задания, хранилища, точки восстановления.
  • Наружу не уходит ничего: ни данных, ни метрик, ни адресов. Ни у продукта, ни у этого сайта.

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

00

Дальше — не рассказ о продукте, а урок на продукте

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

Данные выдуманы. Экраны, статусы, формулировки и текст ошибки — нет: их вычисляет та же панель, что лежит в образе, из подставленных данных. Стенд, который показал бы восстановление красивее, чем оно есть, был бы самой изощрённой ложью на этом сайте.

Такты переключаются прокруткой. С клавиатуры — [ и ].

панель unruin · настоящая данные выдуманы
01
Парк в порядке

Так выглядит норма.

Верхняя строка — единственное, что нужно прочесть за пять секунд. Она говорит фразой, а не цифрами: все задания здоровы, копии проверены на восстановимость.

Круг — «всё в порядке». Форма несёт состояние наравне с цветом: статус читается на распечатке и человеком с дальтонизмом. Ромб — оговорки, квадрат — сбой, пунктир — ни разу не запускалось.

Справа внизу — то, ради чего продукт тратит время после каждого бэкапа: сколько копий он распаковал и прочитал. Не «сколько раз команда отработала без ошибки».

Запомните этот экран. Без него следующий такт не читается.

02
Что-то сломалось

Продукт не молчит и не кричит.

Верхняя фраза сменилась, наверху появился блок «Требует внимания», задание photos поднялось вверх и получило ромб, счётчик оговорок стал единицей. Больше ничего не мигало и не всплывало: остальные шесть заданий как были здоровы, так и остались.

«С оговорками» — отдельное состояние, а не «почти успех». Копия сделана, восстановление проверено, но лежит она в одном месте. Одна полка — это ещё не бэкап.

Формулировка описывает последствие, а не причину: «вторая копия не доходит», а не «SFTP timeout». Причина — на следующем экране, и там она тоже по-русски.

03
Что именно сломалось

Здесь решается, серьёзная это вещь или игрушка.

Строка под именем задания говорит главное: копия годная, но легла в одно место из двух. Ниже — маршрут копии: откуда взяли, куда записали, куда не доехали и сколько раз подряд.

Текст в истории запусков — не вывод движка, а его перевод. Движок сказал copy to "NAS": ssh: connect to host nas-01 port 22: i/o timeout, панель говорит «копия годная, но доехала не во все хранилища». Сначала последствие; техника остаётся в логе для тех, кому она нужна.

Частичный сбой не отменяет копию: справа видно, что 12 из 12 последних копий распакованы и прочитаны. Зелёного поверх испорченной копии продукт не показывает никогда — запуск с непрошедшей проверкой уходит в сбой.

Дальше вы нажмёте «Восстановить». Со стенда ничего не уедет — восстановление идёт в выдуманный сервер.

04
Вернуть данные

Восстановление — не проект на полдня. Это кнопка, которую вы уже нажали.

Все ответы подставлены: откуда, куда, что. Выбирать почти нечего — в момент аварии выбирать нечем. Точку восстановления можно сменить, но по умолчанию берётся последняя годная.

Рабочая папка не тронется: копия ляжет рядом, в новую папку. Продукт никогда не подменяет ваши данные сам — он доводит их до места и говорит, чем подменить.

показ ускорен

Настоящее восстановление идёт минутами — столько, сколько занимает распаковка вашего объёма. Здесь оно уложено в несколько секунд. Это единственное место на сайте, где мы сжали время, и поэтому оно подписано.

05
А если сгорел сам Unruin

Инструмент не берёт вас в заложники.

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

Этот лист печатает сам продукт, с вашими адресами и именами заданий. Ключ хранилища на нём не печатается никогда.

Это единственное место, где произносится слово restic: здесь вы будете звать эту программу руками, а значит обязаны знать её имя. Лист на английском по той же причине — это вывод программы, а не текст сайта.

чего Unruin не гарантирует

Теперь, когда вы видели восстановление своими руками

Бэкапы ваши

Инструмент бесплатный и без гарантий. Он работает на ваших машинах, с вашими копиями, и ответственность за них остаётся вашей. Наружу не уходит ничего: ни данных, ни метрик, ни адресов.

Ключ хранилища невосстановим

Потеряли ключ — копии не открыть никогда: ни вам, ни нам, ни по решению суда. Держите его в аварийном конверте, отдельно от управляющей машины.

Проверка — не страховка

Контрольное восстановление ловит испорченные копии, но не всё: сгоревшее хранилище, стёртый ключ и ошибку в вашем конфиге оно не отменяет. Раз в полгода разверните копию руками по листу из такта 5 — это и есть проверка, которой можно верить.

Автор — один человек

Unruin делает один человек в свободное время. Сообщения о проблемах читаются, но скорость ответа не обещана, и завтрашнего релиза может не быть. Исходный код доступен целиком — видно, что именно происходит с вашими данными, и это можно проверить, не веря нам на слово.

Это не мелкий шрифт и не лицензия. Это способ не верить нам на слово: лист из такта 5 проверяется на вашей машине за десять минут, и после этого наши обещания вам не нужны.

Обычно эти четыре строчки прячут в лицензию. До тура они читались бы как трусость. После того как вы своими руками вернули данные — как инженерная честность.

первые пять минут

Управляющая машина, один compose, первое задание

Ставится только на управляющую машину — ей хватит 512 МБ памяти, подойдёт самый дешёвый VPS или домашний мини-ПК. На серверы, которые вы бэкапите, не ставится ничего.

приготовьте
Адрес сервера и ключ доступа по SSH
и ещё
Место под копии: папка рядом, NAS или S3-совместимое хранилище
и придумайте
Две фразы: пароль входа в панель и мастер-фразу, которой шифруются все остальные ключи. Мастер-фразу положите в аварийный конверт — без неё Unruin не расшифрует ни одного своего секрета.
займёт
Один compose и одно задание. Первая копия идёт столько, сколько занимает ваш объём, — этого мы за вас не знаем.
перед compose
конфиг, папка под копии и две фразы
mkdir -p config backups
echo '{}' > config/jobs.yaml

# те самые две фразы; compose читает этот файл сам
cat > .env <<'EOF'
UNRUIN_AUTH_PASSWORD=пароль-входа-в-панель
UNRUIN_MASTER_PASSPHRASE=мастер-фраза-в-конверт
EOF
chmod 600 .env
compose.yml
services:
  unruin:
    image: git.dreep.ru/smirnar/unruin:1.0.0
    restart: unless-stopped
    command: ["serve", "/config/jobs.yaml"]
    ports:
      - "8080:8080"
    volumes:
      # задания; панель пишет сюда сама, поэтому не :ro
      - ./config:/config
      # история запусков, ключи, известные хосты
      - unruin-state:/var/lib/unruin
      # первое хранилище — просто папка
      - ./backups:/mnt/backups
      # ключ доступа к вашим серверам
      - ~/.ssh/id_ed25519:/keys/ssh:ro
    environment:
      UNRUIN_LISTEN: ":8080"
      # вход в панель
      UNRUIN_AUTH_USER: "you"
      UNRUIN_AUTH_PASSWORD: "${UNRUIN_AUTH_PASSWORD}"
      # ею шифруются все остальные ключи — в конверт, офлайн
      UNRUIN_MASTER_PASSPHRASE: "${UNRUIN_MASTER_PASSPHRASE}"

volumes:
  unruin-state:
запуск
docker compose up -d
# дальше — http://localhost:8080

Файл целиком, а не «одна волшебная команда»: вы имеете право знать, что запускаете на своей машине, до того как запустите. Без пароля панель просто откажется подниматься на публичном адресе.

Что вы увидите, когда получится

Пустую панель и приглашение добавить первый сервер. Вставляете адрес, Unruin сам проверяет доступ и показывает, что на машине есть; выбираете папку или базу, задаёте расписание. Через несколько минут в истории появится первый запуск с пометкой, что копия проверена восстановлением, — ровно тот экран, с которого начинался тур.

Не получилось? Панель не открылась — смотрите docker compose logs unruin: продукт отказывается стартовать молча и пишет, чего ему не хватило. Не подключается к серверу — покажет, какой именно шаг не прошёл и что проверить.

Всё, что Unruin делает, описано текстовым файлом config/jobs.yaml — его можно держать в git. Но настроить всё можно и мышкой из панели: файл появится сам.

Дальше этого абзаца начинается документация: каждое поле конфигурации, подготовка сервера, что именно считается успешным запуском и как восстановиться, когда самого Unruin уже нет.