arculaДокументация

Вопросы

Вопросы и ответы

Что будет, если упадёт панель?

Бэкапы продолжатся. Расписание и последний принятый план хранятся на каждом сервере, агент отправляет бэкапы в хранилища напрямую. Журнал он копит у себя и досылает, когда панель вернётся. В истории это время отмечено: «панель была недоступна» — История.

Пока панели нет, не работают ЛК, «Бэкап сейчас», изменения плана, уведомления, ночные проверки и очистка хранилищ. Восстановить данные можно и без неё: sudo arcula restore на сервере или по recovery kit на новой машине — Восстановление без панели.

О своём падении панель сообщить не может. Поставьте внешнюю проверку адреса https://<адрес панели>/api/web/v1/health.

Что будет, если упадёт одно хранилище?

Остальные продолжат сохранять: у каждого хранилища своя очередь отправки, и недоступное никого не держит. У серверов копия в этом хранилище станет «отстаёт», после ближайшей проверки доступа — «нет доступа», у самого хранилища — «Нет доступа». Пока в другом хранилище есть свежий бэкап, статус серверов — «Есть замечания».

Когда хранилище вернётся, туда уйдёт последний готовый бэкап. Бэкапов за время сбоя в нём не будет — они есть в другом хранилище. Подробно — Нет доступа.

Может ли взломанный сервер удалить бэкапы?

Да. Защиты от удаления в arcula нет: агенты пишут в S3 напрямую своим ключом, отдельного шлюза между ними и хранилищем нет — так решено 24.10.

  • Режим «один ключ на все серверы» — взломанный сервер может удалить бэкапы всех серверов в этом хранилище.
  • Режим «свой ключ у каждого сервера» — только свои, если провайдер умеет ключи с доступом к одной папке.

Что снижает риск: свой ключ у каждого сервера; второе хранилище у другого провайдера или в другом аккаунте; защита от удаления у самого провайдера, если он её умеет, — arcula её не настраивает. После взлома смените ключи S3: при отключении сервера ЛК напомнит, какие именно. Режим ключа выбирается у хранилища — Хранилища.

Где хранятся пароли и ключи?

ЧтоГде
Пароли restic-репозиториевВ базе панели, зашифрованы мастер-ключом. На сервере — /etc/arcula/repos/<id хранилища>.key, только для root. В recovery kit
Ключи S3В базе панели под мастер-ключом. На сервере — /etc/arcula/repos/<id хранилища>.json. В recovery kit. Секрет ЛК больше не показывает
Ключи агента для панели/etc/arcula/credentials на сервере
Мастер-ключ панелиВне базы: файл, Vault или переменная ARCULA_MASTER_KEY. Копия — у вас в менеджере паролей
Пароль recovery kitТолько у вас, панель его не хранит

Пароли ваших баз и содержимое .env агент в панель не отправляет: он берёт их внутри контейнера в момент дампа. Подробно — Recovery kit и мастер-ключ.

Что будет, если потерять мастер-ключ?

Им зашифрованы ключи хранилищ и пароли репозиториев в базе панели. Без него даже панель, поднятая из бэкапа своей базы, этих секретов не прочитает. Останется восстановление по recovery kit: в нём всё нужное, мастер-ключ ему не нужен.

Поэтому храните оба офлайн: kit — файлом на своём компьютере, мастер-ключ — в менеджере паролей. Мастер-ключ.

Как проверить, что из бэкапа можно восстановиться?

Recovery kit открывается. arcula kit verify проверяет, что kit расшифровывается, каждый репозиторий каждого сервера читается, а в последнем бэкапе — нужный сервер. Root не нужен, подойдёт любая Linux-машина с restic. Данные команда не восстанавливает.

arcula kit verify ./arcula-recovery-kit.age

Данные поднимаются. Пробное восстановление на сервере: в мастере выберите режим component. База импортируется в новую базу рядом с рабочей и проверяется, рабочие данные не трогаются.

sudo arcula restore

После этого у бэкапа на вкладке «Бэкапы» — «восстановлен компонент». Делайте так регулярно, по очереди на всех серверах. Подробно — Восстановление.

Что значит «Пропало с сервера» в плане?

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

Пропало по ошибке — верните данные на сервер и нажмите «Обнаружить сейчас»: сервер → «Настройки защиты». Пропало с сервера.

Почему в журнале «Нет на сервере: путь из плана»?

Агент начал бэкап, а пути или тома из плана на диске нет. Чаще всего контейнер ссылается на каталог, которого на этом сервере нет, — например, Compose из CI с путём другой машины. Или каталог удалили. Копировать нечего, данные не теряются.

Уберите его из плана: после «Обнаружить сейчас» он окажется в «Пропало с сервера», и сохранение плана его уберёт. Пока он в плане, у сервера может висеть «… не попадает в бэкап» — Компонент не попадает в бэкап.

Почему неполный бэкап всё равно считается?

Если один компонент не собрался — например, упал pg_dump, — всё остальное в этом бэкапе собрано и сохранено, и из него можно восстановиться. Поэтому «Последняя копия» и состояние копий в хранилищах считаются и по нему.

Чтобы это не прятало проблему, сервер сразу становится «Критично» со строкой «… не попадает в бэкап: причина» — пока следующий бэкап снова не соберёт компонент. Сам этот компонент берите из более раннего бэкапа — Бэкапы.

sudo arcula status на сервере считает «If it fails now» только по полным бэкапам, поэтому после такого сбоя цифры в ЛК и на сервере расходятся.

Как изменить частоту бэкапов?

В плане сервера, карточка «Как часто»:

ПрофильБэкапНорма
«Критичный»каждые 30 минне старше 1 ч
«Обычный»каждые 6 чне старше 12 ч
«Редко меняется»ежедневноне старше 36 ч

Выберите профиль и нажмите «Сохранить план». Агент получит новый план в течение минуты. Расписание считается по поясу панели. Своего интервала, кроме этих трёх, в этой версии нет. Как норма связана с потерей — Сколько потеряется.

Что такое «часть 2/30»?

Это ночная проверка данных хранилища. Каждую ночь с 03:00 до 06:00 по поясу панели она читает одну тридцатую часть данных каждого репозитория (restic check --read-data-subset=2/30) и сверяет шифрование и контрольные суммы. «2/30» — какая часть прочитана этой ночью. За 30 ночей данные прочитаны целиком, и круг начинается заново.

Нашла ошибку — круг стоит, следующей ночью читается та же часть. «Проверить данные» на странице хранилища читает следующую часть сразу. Проверка данных.

Как удалить arcula с сервера?

На сервере:

sudo arcula uninstall

Команда отвязывает сервер от панели и удаляет службу, бинарник, /var/lib/arcula и /etc/arcula вместе с паролями репозиториев. С --keep-config пароли остаются — по ним можно читать репозитории без панели. Бэкапы в хранилищах команда не удаляет никогда. Если панель в этот момент недоступна, сервер отвяжется только у себя — отключите его в ЛК вручную.

В ЛК сервер станет «Сервер отключён», история и бэкапы останутся. Убрать его совсем, с бэкапами или без, — «Настройки защиты» → «Удалить сервер». Удалить сервер или хранилище.

В каком часовом поясе время в ЛК?

В поясе устройства, с которого вы смотрите. Открыли ЛК в другой стране — время пересчитается само. В журнале — полное время с поясом.

У панели свой пояс: по нему идут расписание бэкапов, ночные проверки и очистка, время в уведомлениях. Он показан в «Настройки» → «Часовой пояс». Если вы переехали надолго, там же есть «Сделать поясом панели».

Как обновить агентов?

Новая версия агента приходит вместе с образом панели. Агенты ставят только версию, подписанную вашим ключом, поэтому сначала её нужно подписать. Затем «Настройки» → «Обновления агента» → «Обновить везде» или «Обновить агента» на странице одного сервера.

Агент дождётся конца бэкапа и заменит себя. Если новая версия не запустится за 3 минуты, он сам вернёт прежнюю. Итог — в журнале сервера: «Агент обновлён» или «Агент не обновился».

С сервера — sudo arcula update. Старую версию можно поставить только так: sudo arcula update --version X.Y.Z. Подробно — Обновить агентов и Обновления агента.

Что попадает в бэкап с хоста?

Настройки сервера, которые вы отметили в плане, карточка «Настройки сервера»:

  • пользователи и группы — /etc/passwd, /etc/group;
  • службы systemd — /etc/systemd/system;
  • cron — /etc/crontab, /etc/cron.d, crontab пользователей;
  • конфиг Docker — /etc/docker/daemon.json;
  • Caddy и nginx — /etc/caddy, /etc/nginx;
  • сертификаты Let's Encrypt — /etc/letsencrypt.

Не входят: пароли пользователей (/etc/shadow), SSH-ключи, установленные пакеты, образ системы целиком. При восстановлении настройки хоста только извлекаются в /var/lib/arcula/restore/<id>/host — на место их кладёте вы. Способы бэкапа.

Почему копия «отстаёт»?

Последний бэкап, сохранённый в этом хранилище, старше нормы профиля. Обычные причины:

  • хранилище отвечает ошибкой — причина у копии на вкладке «Хранилища» сервера, расшифровка — в Ошибках копий;
  • канал медленнее, чем идут бэкапы, — в журнале много «Бэкап пропущен»;
  • для этого хранилища задано окно отправки «ночью» — днём копия отстаёт, так и задумано;
  • отправка в это хранилище выключена;
  • в режиме «свой ключ у каждого сервера» для сервера не задан ключ.

Подробно — Копия отстаёт.

Почему в журнале «Бэкап пропущен»?

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

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

Агент не на связи — бэкапы идут?

Да, если сервер работает. Агент делает бэкапы по последнему плану и без панели, журнал досылает потом. Пока он молчит, панель раз в час сама смотрит его репозитории в хранилищах и учитывает найденные бэкапы в «Последней копии». Что проверить — Агент не на связи.

План подтверждён, а сервер «Не настроено» — почему?

Первый бэкап ещё не сохранён. Агент забирает план в течение минуты и сразу делает первый бэкап, но большой первый бэкап может уходить долго. Ход виден на странице сервера: «Идёт бэкап: …».

Если за две нормы профиля после подтверждения ни один бэкап не сохранился, статус станет «Критично» с причиной — Нет свежего бэкапа.

Удаляет ли arcula старые бэкапы?

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

Очистка, Ключевые точки.

Что будет, когда хранилище дойдёт до лимита?

Ничего не остановится: лимит — ваш бюджет в ЛК, а не квота провайдера. С 90 % у хранилища появится «До лимита осталось …». Если у провайдера есть своя квота, по её исчерпании бэкапы перестанут сохраняться. Освободить место — очисткой. До лимита осталось мало места.

Останавливает ли arcula сервисы на время бэкапа?

Нет. PostgreSQL снимается pg_dump внутри работающего контейнера, тома и каталоги restic читает с диска на ходу. Единственная пауза — у способа «согласованная копия SQLite»: контейнер замирает (docker pause) на время копии файлов базы, и только если они не больше 1 ГБ. Восстановление тоже ничего не запускает — сервисы включаете вы. Способы бэкапа.

Почему sudo arcula status и ЛК показывают разное?

arcula status считает по журналу на самом сервере и работает без панели. Точные статусы считает панель. Расхождения бывают такие:

  • после неполного бэкапа: arcula status считает потерю только по полным бэкапам, ЛК — по последнему сохранённому;
  • пороги свежести на сервере — два и четыре интервала расписания; у профиля «Редко меняется» это 48 и 96 ч, а в ЛК — 36 и 72 ч;
  • панель видит свои проверки доступа и данных хранилищ, агент о них не знает.

Как защитить саму панель?

Так же, как любой сервер: поставьте агента на сервер панели и включите в план её PostgreSQL. Мастер-ключ держите не только на этом сервере — копия в менеджере паролей. Recovery kit — у себя на компьютере. Без мастер-ключа секреты из бэкапа базы панели не прочитать, а по kit данные поднимаются и без панели.

Если панель и Vault на одном сервере, поднимайте сначала Vault, затем панель. Восстановление без панели.

Та же статья — в панели, в разделе «Справка».