2026-09-19
Bareos на Ubuntu: сервер резервного копирования, веб-интерфейс и задания

Bareos на Ubuntu: сервер резервного копирования, веб-интерфейс и задания

Bareos (Backup Archiving Recovery Open Sourced) — открытая система резервного копирования с централизованным управлением: Director (управление), File Daemon (агент сбора данных), Storage Daemon (хранение) и веб-интерфейс. В качестве базы используется PostgreSQL.

Инструкция для Ubuntu 22.04/24.04/26.04.


Подготовка системы

Пакеты

apt update
apt upgrade
apt install wget curl

Время

apt install chrony
timedatectl set-timezone Europe/Moscow

Брандмауэр

Открываем порты:

  • 80 и 443 — веб-интерфейс;
  • 9101 — Director (bareos-dir);
  • 9102 — File Daemon (bareos-fd);
  • 9103 — Storage Daemon (bareos-sd).

iptables:

apt install iptables iptables-persistent
iptables -I INPUT -p tcp --match multiport --dports 80,443 -j ACCEPT
iptables -I INPUT -p tcp --match multiport --dports 9101:9103 -j ACCEPT
netfilter-persistent save

UFW:

ufw allow 80,443
ufw allow 9101:9103

Корневые сертификаты

Репозиторий Bareos работает по HTTPS с сертификатом Let’s Encrypt. Устаревшие корневые сертификаты дают ошибку Issued certificate has expired.

apt install ca-certificates

Установка Bareos

На сайте загрузок смотрим поддерживаемые дистрибутивы и создаём переменную:

DIST=xUbuntu_24.04

Скачиваем настройки репозитория:

wget https://download.bareos.org/current/${DIST}/bareos.list -O /etc/apt/sources.list.d/bareos_${DIST}.list

При ошибке Issued certificate has expired — см. раздел устранения проблем ниже.

apt install gnupg2
curl -fsSL https://download.bareos.org/current/${DIST}/Release.key | gpg --dearmor -o /etc/apt/trusted.gpg.d/bareos.gpg
apt update

Устанавливаем:

apt install bareos bareos-database-postgresql

Пакет bareos и поддержка PostgreSQL.

На запрос конфигурирования БД отвечаем no:

Configure database for bareos-database-common with dbconfig-common? [yes/no] no

Настройка сервера баз данных

В новых версиях Bareos поддержка MySQL/MariaDB прекращена — только PostgreSQL.

apt install postgresql postgresql-contrib

Выполняем скрипты из пакета bareos-database-postgresql:

su - postgres -c /usr/lib/bareos/scripts/create_bareos_database
Info: Creating database 'bareos'
CREATE DATABASE
ALTER DATABASE
Info: Database encoding OK
Info: Creation of database 'bareos' succeeded.
su - postgres -c /usr/lib/bareos/scripts/make_bareos_tables
su - postgres -c /usr/lib/bareos/scripts/grant_bareos_privileges

Первый скрипт создаёт базу, второй — таблицы, третий — привилегии.

Запускаем сервисы:

systemctl start bareos-dir bareos-fd bareos-sd
systemctl status bareos-dir bareos-fd bareos-sd

Веб-интерфейс

1. Установка и запуск

apt install bareos-webui apache2 libapache2-mod-php
systemctl restart apache2
systemctl restart bareos-dir

Открываем http://<IP-сервера> — стартовая страница Apache.

2. Доступ и вход

bconsole
* configure add console name=admin password=my_password profile=webui-admin tlsenable=no

где:

  • admin — имя учётной записи;
  • my_password — пароль;
  • profile — профиль доступа из /etc/bareos/bareos-dir.d/profile (по умолчанию: webui-admin — полный доступ, operator — работа с заданиями, webui-readonly — только просмотр);
  • tlsenable=no — без TLS (иначе ошибка аутентификации).
Created resource config file "/etc/bareos/bareos-dir.d/console/admin.conf":
Console {
  Name = "admin"
  Password = "my_password"
  Profile = webui-admin
  TlsEnable = no
}
* reload
* exit

Открываем http://<IP-сервера>/bareos-webui/, входим под созданной учёткой.

Можно обойтись без bconsole — создать файл /etc/bareos/bareos-dir.d/console/admin.conf вручную и перезапустить bareos-dir.

3. SSL (опционально)

Для HTTPS нужно: доменное имя, сертификат (Let’s Encrypt / внутренний CA / коммерческий) и настройка Apache.

a2enmod ssl
vi /etc/apache2/mods-enabled/ssl.conf
SSLCertificateFile /etc/pki/tls/certs/bareos.crt
SSLCertificateKeyFile /etc/pki/tls/private/bareos.key
SSLCertificateChainFile /etc/pki/tls/certs/bareos-chain.crt

где SSLCertificateFile/SSLCertificateKeyFile — пути до сертификата и ключа, SSLCertificateChainFile — цепочка CA (если не встроена в файл сертификата).

apachectl configtest
apachectl graceful

Открываем https://bareos.imaxis.ru/bareos-webui/.


Клиент

Тип и версию системы смотрим командой:

cat /etc/os-release

Установка на Ubuntu/Debian

DIST=xUbuntu_22.04
wget https://download.bareos.org/current/${DIST}/bareos.list -O /etc/apt/sources.list.d/bareos_${DIST}.list
apt install gnupg2
curl -fsSL https://download.bareos.org/current/${DIST}/Release.key | gpg --dearmor -o /etc/apt/trusted.gpg.d/bareos.gpg
apt update
apt install bareos-filedaemon
systemctl enable bareos-filedaemon

Брандмауэр (9102/tcp):

iptables -I INPUT -p tcp --dport 9102 -j ACCEPT
apt install iptables-persistent
netfilter-persistent save

Установка на CentOS/Rocky

DIST=EL_9
wget https://download.bareos.org/current/${DIST}/bareos.repo -O /etc/yum.repos.d/bareos_${DIST}.repo
yum install bareos-fd
systemctl enable bareos-fd --now
firewall-cmd --permanent --add-port=9102/tcp
firewall-cmd --reload

Добавление клиента на сервере

bconsole
* configure add client name=client_name address=192.168.0.22 password=client_password

где client_name — произвольное имя, 192.168.0.22 — адрес клиента, client_password — пароль для подключения.

Нестандартный порт задаётся опцией port:

* configure add client name=client_name address=192.168.0.22 port=9103 password=client_password

Вывод:

Exported resource file ".../bareos-fd.d/director/bareos-dir.conf":
Director {
  Name = bareos-dir
  Password = "[md5]23ea8b731947b6aff12b13c98bca39ae"
}
Created resource config file ".../client/client_name.conf":
Client {
  Name = "client_name"
  Address = "192.168.0.22"
  Password = "client_password"
}
* reload
* exit

На клиенте в /etc/bareos/bareos-fd.d/director/bareos-dir.conf прописываем полученный блок Director с паролем и перезапускаем:

# Ubuntu
systemctl restart bareos-filedaemon
# CentOS
systemctl restart bareos-fd

В веб-интерфейсе в разделе «Клиенты» появятся добавленные хосты. Отсутствие значков и версий — нормально, они появятся после первых заданий.


Работа с заданиями

Каталоги

  • /etc/bareos/bareos-dir.d/job — задания;
  • /etc/bareos/bareos-dir.d/fileset — наборы файлов;
  • /etc/bareos/bareos-dir.d/jobdefs — шаблоны;
  • /etc/bareos/bareos-dir.d/schedule — расписания.

Уровни резервирования

  • Full — полная копия. Удобно восстанавливать, но много места.
  • Differential — изменения с момента последнего Full. Нужны Full + Differential.
  • Incremental — изменения с момента последнего Differential/Full. Мало места, сложнее восстановление.

Типы заданий

Restore, Backup, Admin, Migrate, Copy, Verify, Consolidate.

Синтаксис расписаний

Момент Описание Примеры
<week-keyword> Неделя месяца 1st5th, firstlast
<wday-keyword> День недели monsun, mondaysunday
<week-of-year-keyword> Неделя года w00w53
<month-keyword> Месяц jandec
<hour> / <minute> Время 023 / 059
<time> Время <hour>:<minute>
<time-spec> Момент at <time>, hourly
<day-spec> Дни <day>, <wday-keyword>, daily
<month-spec> Месяцы <month-keyword>, monthly

1. Простое задание (вручную)

vi /etc/bareos/bareos-dir.d/job/FirstJob.conf
Job {
  Name = "FirstJob"
  Client = "bareos-fd"
  Description = "Job Backup"
  Level = Full
  Storage = File
  Pool = Full
  Type = Backup
  FileSet = "FirstFileset"
  Messages = Standard
  Priority = 5
}

где:

  • Name — имя задания;
  • LevelFull/Differential/Incremental;
  • Storage — устройство хранения (по умолчанию File);
  • Pool — пул (по умолчанию Full, Differential, Incremental);
  • TypeBackup/Restore/Verify;
  • FileSet — набор файлов;
  • Messages — пресет сбора сообщений;
  • Priority — чем ниже число, тем выше приоритет.
vi /etc/bareos/bareos-dir.d/fileset/FirstFileset.conf
FileSet {
  Name = "FirstFileset"
  Description = "Backup files"
  Include {
    Options {
      Signature = MD5
    }
    File = "/tmp"
  }
}

где:

  • Include — добавление файлов;
  • Options — настройки группы файлов;
  • SignatureMD5 или SHA1;
  • File — путь (обязательно в двойных кавычках).

Тестируем:

echo "test" > /tmp/backup_test_file
bconsole
* reload
* run job=FirstJob
OK to run? (yes/mod/no): yes
Job queued. JobId=8
* exit

В веб-интерфейсе на вкладке «Задания» появится выполненное задание.

Проверим восстановление:

rm -f /tmp/backup_test_file

В веб-интерфейсе → «Восстановление» → выбираем клиента и задание → файл → указываем каталог и нажимаем «Восстановление».

Файл /tmp/backup_test_file восстановится в /tmp/tmp/backup_test_file.

2. Задание для агента

cp /etc/bareos/bareos-dir.d/job/FirstJob.conf /etc/bareos/bareos-dir.d/job/SecondJob.conf
cp /etc/bareos/bareos-dir.d/fileset/FirstFileset.conf /etc/bareos/bareos-dir.d/fileset/SecondFileset.conf

В SecondJob.conf меняем:

Name = "SecondJob"
Client = "ubuntu"
FileSet = "SecondFileset"

В SecondFileset.conf:

Name = "SecondFileset"
...
    File = "/tmp"
    File = "/etc"

Две цели бэкапа — /tmp и /etc.

bconsole
* reload
* run job=SecondJob

3. Шаблоны

vi /etc/bareos/bareos-dir.d/jobdefs/DefThirdJob.conf
JobDefs {
  Name = "DefThirdJob"
  Description = "Job Definition Backup"
  Level = Full
  Storage = File
  Pool = Full
  Type = Backup
  FileSet = "SettingsFileset"
  Messages = Standard
  Priority = 10
}
vi /etc/bareos/bareos-dir.d/fileset/SettingsFileset.conf
FileSet {
  Name = "SettingsFileset"
  Description = "Backup of Setting files"
  Include {
    Options {
      Signature = MD5
      Compression = LZ4
    }
    File = "/etc"
  }
}

CompressionLZ4 или GZIP.

vi /etc/bareos/bareos-dir.d/job/ThirdJob.conf
Job {
  Name = "ThirdJob"
  Client = "CentOS"
  Description = "Job Backup"
  JobDefs = "DefThirdJob"
}
bconsole
* reload
* run job=ThirdJob

4. Расписание

vi /etc/bareos/bareos-dir.d/schedule/EveryDay.conf
Schedule {
  Name = "EveryDay"
  Run = daily at 21:00
  Run = daily at 07:00
}

Задание выполняется дважды в день — в 7:00 и 21:00.

Привязка в задании или шаблоне:

Schedule = "EveryDay"
systemctl reload bareos-dir

На вкладке «Расписания» появится задание.

5. Скрипты до/после задания

Простой способ:

Run Before Job = '/path/to/script.sh'
Run After Job = '/path/to/script.sh'
Client Run Before Job = '/path/to/script.sh'
Client Run After Job = '/path/to/script.sh'

Передаётся только путь, без параметров.

Через RunScript:

Job {
  ...
  RunScript {
    FailJobOnError = Yes
    RunsOnClient = Yes
    RunsWhen = Before
    Command = "su postgres -c 'pg_dumpall > /var/tmp/postgresql_dump.sql'"
  }
  RunScript {
    RunsOnSuccess = Yes
    RunsOnClient = Yes
    RunsWhen = After
    Command = "/var/tmp/postgresql_dump.sql"
  }
}

где:

  • FailJobOnError — прервать задание при ошибке скрипта;
  • RunsOnSuccess — только при успешном бэкапе;
  • RunsOnClient — на клиенте (Yes) или сервере (No);
  • RunsWhenBefore/After;
  • Command — выполняемая команда.
systemctl reload bareos-dir

Оптимизация пулов

По умолчанию пул может занять всё дисковое пространство.

vi /etc/bareos/bareos-dir.d/pool/Full.conf
Volume Retention = 365 days
Maximum Volume Bytes = 50G
Maximum Volumes = 100

где:

  • Volume Retention — срок, после которого бэкапы считаются устаревшими;
  • Maximum Volume Bytes — размер одного файла пула;
  • Maximum Volumes — сколько файлов может быть создано.

Пример расчёта: носитель 4 Тб, пул 50G × 100 = 5 Тб — превышает объём, нужно уменьшить число файлов или их размер.

Добавляем:

Recycle Oldest Volume = yes
Purge Oldest Volume = yes
Auto Prune = yes

где:

  • Recycle Oldest Volume — перезаписывает самый старый том;
  • Purge Oldest Volume — принудительная переработка старого тома;
  • Auto Prune — автоочистка по Volume Retention.
systemctl restart bareos-sd

Анализ и устранение проблем

Debug при выполнении заданий

bconsole
* setdebug client=client_name level=200 trace=1
2000 OK setdebug=200 trace=1 ... tracefile=/var/lib/bareos/client_name-fd.trace
tail -f /var/lib/bareos/client_name-fd.trace

После отладки выключаем:

* setdebug client=client_name level=0 trace=0
rm -f /var/lib/bareos/client_name-fd.trace

Возможные ошибки

1. configure error: Could not find config Resource «Profile» … Profile = webui-admin

Причина: Bareos не видит файлы профилей из bareos-webui.

Решение:

systemctl restart bareos-dir

2. Sorry, cannot authenticate. Wrong username, password or SSL/TLS handshake failed

Причина: с версии 18.2 используется TLS-PSK, не поддерживаемый PHP по умолчанию.

Решение: отключить шифрование между Director и UI:

vi /etc/bareos/bareos-dir.d/console/admin.conf
Console {
  ...
  TLS Enable = No
}
systemctl restart bareos-dir

3. BnetHost2IpAddrs() for host «XXX» failed: ERR=Name or service not known

Причина: клиент не может разрешить имя Storage-сервера.

Решение: проверить адрес в конфиге storage:

vi /etc/bareos/bareos-dir.d/storage/File.conf
Address = bareos.imaxis.ru
systemctl restart bareos-dir
nslookup bareos.imaxis.ru

Если DNS нет — добавить в /etc/hosts на клиенте:

192.168.0.20 bareos.imaxis.ru

4. Issued certificate has expired

Причина: устарели корневые сертификаты.

Решение: быстрый способ — wget --no-check-certificate; правильный — обновить ca-certificates.

5. Could not connect to Storage daemon on XXX:9103. ERR=No route to host

Причина: Director не может подключиться к Storage daemon по сети.

Решение: проверить Address в /etc/bareos/bareos-dir.d/storage/File.conf и доступность сервера.


Тонкости и подводные камни

  • Только PostgreSQL — поддержка MySQL/MariaDB прекращена.
  • bareos-filedaemon vs bareos-fd — на Debian/Ubuntu служба называется bareos-filedaemon, на RPM — bareos-fd.
  • Скрипты БД запускать от postgressu - postgres -c /usr/lib/bareos/scripts/....
  • TLS-PSK и webui — при проблемах входа отключайте TLS для консоли (TLS Enable = No).
  • Имя storage должно разрешаться на клиенте — иначе задания падают с ошибкой DNS.
  • Пулы по умолчанию не ограничены — обязательно настраивайте Maximum Volumes/Volume Retention.
  • Двойные кавычки в File — одинарные не работают.

Шпаргалка

DIST=xUbuntu_24.04
wget https://download.bareos.org/current/${DIST}/bareos.list -O /etc/apt/sources.list.d/bareos_${DIST}.list
curl -fsSL https://download.bareos.org/current/${DIST}/Release.key | gpg --dearmor -o /etc/apt/trusted.gpg.d/bareos.gpg
apt update && apt install bareos bareos-database-postgresql postgresql
su - postgres -c /usr/lib/bareos/scripts/create_bareos_database
su - postgres -c /usr/lib/bareos/scripts/make_bareos_tables
su - postgres -c /usr/lib/bareos/scripts/grant_bareos_privileges
apt install bareos-webui apache2 libapache2-mod-php
bconsole
* configure add console name=admin password=my_password profile=webui-admin tlsenable=no
* reload

Проверено на: Ubuntu 22.04/24.04/26.04 + Bareos (current), PostgreSQL.
Дата: Сентябрь 2026.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *