OpenNebula — открытая платформа для частного облака. Она объединяет несколько серверов с KVM в один пул ресурсов. Пользователи получают ВМ из шаблонов через веб-интерфейс или API, а администратор управляет квотами, сетями, хранилищами и правами. По задачам OpenNebula ближе к «маленькому AWS у себя», чем к Proxmox, который удобнее для управления конкретными серверами.
Актуальная ветка на октябрь 2026 года — OpenNebula 7.4. Бесплатная версия называется Community Edition (CE), пакеты лежат в открытом репозитории downloads.opennebula.io. Фронтенд и узлы официально поддерживаются на Ubuntu 24.04, Debian 12/13 и AlmaLinux/RHEL 9 и 10. CentOS 6 из старой версии этой статьи давно не поддерживается.
Для знакомства хватит скрипта miniONE: одна команда, и через 10–20 минут на одном сервере работает фронтенд с локальным KVM-узлом. Для рабочей установки ставим фронтенд из репозитория на MariaDB, а затем добавляем узлы KVM. Оба варианта разобраны ниже на Ubuntu 24.04.
Из чего состоит облако OpenNebula
- Фронтенд (Front-end) — управляющий сервер. На нём работают демон
onedи планировщик, база данных, веб-интерфейс Sunstone (FireEdge), а также OneFlow (сервисы из нескольких ВМ) и OneGate (обмен данными между ВМ и облаком). - Узлы (Hosts) — серверы с KVM и libvirt, на которых запускаются ВМ. Фронтенд управляет ими по SSH от пользователя
oneadmin. - Хранилища (Datastores) — system (диски запущенных ВМ), image (образы) и files. По умолчанию лежат в
/var/lib/one/datastores/. - Виртуальные сети — описание моста или VLAN на узлах и пул адресов для ВМ.
Фронтенд может одновременно быть и узлом — так работает miniONE. В продакшене их обычно разделяют.
Что изменилось с 2017 года
Старая версия статьи описывала OpenNebula 5.x на CentOS 6. Сейчас это совсем другая установка:
| Тогда (5.x, CentOS 6) | Сейчас (7.x) | |
|---|---|---|
| ОС | CentOS 6 | Ubuntu 24.04, Debian 12/13, AlmaLinux/RHEL 9 и 10 |
| Репозиторий | opennebula.org/repo, gpgcheck=0 | downloads.opennebula.io/repo/<версия>/, подпись обязательна |
| Веб-интерфейс | Sunstone на Ruby | Sunstone на FireEdge (Ruby Sunstone удалён в 7.0) |
| Запуск служб | service opennebula start | systemctl enable --now ... |
| Редакции | Одна | Community Edition и Enterprise Edition |
| Быстрая установка | Нет | miniONE, готовые приложения в Marketplace |
Главное практическое отличие: отключать проверку подписи пакетов (gpgcheck=0, как было в старой инструкции) больше не нужно и нельзя. Ключ публикуется официально.
Вариант 1. miniONE для теста
miniONE — официальный скрипт, который ставит фронтенд и локальный узел KVM на один сервер. Он создаёт сеть и шаблон тестовой ВМ и загружает образ из Marketplace. Это стенд, а не продакшен: скрипт меняет сетевые настройки, правила iptables и ставит много пакетов. Запускайте его только на чистом сервере или ВМ с вложенной виртуализацией.
Требования по документации 7.x: чистая Ubuntu 22.04/24.04, Debian 12/13 или AlmaLinux 9/10, доступ root, SSH на порту 22, процессор с VT-x/AMD-V. Требования к памяти и диску в разных версиях документации отличаются, на 7.2 указаны 16 ГБ RAM и 80 ГБ свободного места. Сверьтесь со своей версией.
wget 'https://github.com/OpenNebula/minione/releases/latest/download/minione'
chmod +x minione
./minione -h # список параметров
./minione --password 'ВашСложныйПароль'
В конце скрипт выведет адрес веб-интерфейса и данные для входа пользователя oneadmin, примерно так:
### Report
OpenNebula 7.x was installed
Sunstone is running on:
http://203.0.113.10/
Use following to login:
user: oneadmin
password: ...
Если стенд стоит на сервере с публичным адресом, закройте порт 80 firewall-ом и заходите через SSH-туннель: ssh -L 8080:localhost:80 root@сервер, затем откройте http://localhost:8080/.
Вариант 2. Фронтенд на Ubuntu 24.04 вручную
Шаг 1. Подготовка
Нужна чистая Ubuntu 24.04 с постоянным IP и именем хоста, которое разрешается во всех узлах (DNS или /etc/hosts). Обновите систему:
apt update && apt full-upgrade -y
hostnamectl set-hostname one-fe.example.lan
Шаг 2. Репозиторий OpenNebula CE
mkdir -p /etc/apt/keyrings
wget -q -O- https://downloads.opennebula.io/repo/repo2.key \
| gpg --dearmor --yes --output /etc/apt/keyrings/opennebula.gpg
echo "deb [signed-by=/etc/apt/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/7.4/Ubuntu/24.04 stable opennebula" \
> /etc/apt/sources.list.d/opennebula.list
apt update
Номер версии входит в адрес репозитория. Чтобы перейти на следующую ветку, нужно сменить его и пройти процедуру обновления из документации, включая миграцию базы командой onedb upgrade.
Шаг 3. База данных MariaDB
По умолчанию OpenNebula использует SQLite. Для продакшена документация рекомендует MySQL или MariaDB, причём сразу: переносить базу потом сложнее.
apt install -y mariadb-server
cat > /etc/mysql/mariadb.conf.d/60-opennebula.cnf <<'END'
[mysqld]
transaction-isolation = READ-COMMITTED
END
systemctl restart mariadb
mysql -u root <<'END'
CREATE DATABASE opennebula;
CREATE USER 'oneadmin'@'localhost' IDENTIFIED BY 'СложныйПарольБД';
GRANT ALL PRIVILEGES ON opennebula.* TO 'oneadmin'@'localhost';
FLUSH PRIVILEGES;
END
Уровень изоляции READ COMMITTED требует документация OpenNebula. В конфиге он сохраняется после перезапуска, в отличие от SET GLOBAL. Не забудьте базовую защиту MariaDB — см. настройку минимальной безопасности MySQL после установки.
Шаг 4. Пакеты фронтенда
apt install -y opennebula opennebula-fireedge opennebula-gate opennebula-flow
Что ставится:
opennebula— демонoned, планировщик и утилиты командной строки (onehost,onevm,onetemplateи другие);opennebula-fireedge— веб-интерфейс Sunstone;opennebula-gate— OneGate, через него ВМ сообщают о себе облаку;opennebula-flow— OneFlow, сервисы из нескольких ВМ и автомасштабирование.
Шаг 5. Настройка базы и пароля oneadmin
Главный конфиг — /etc/one/oned.conf. Найдите блок DB и замените его:
DB = [ BACKEND = "mysql",
SERVER = "localhost",
PORT = 0,
USER = "oneadmin",
PASSWD = "СложныйПарольБД",
DB_NAME = "opennebula",
CONNECTIONS = 25,
COMPARE_BINARY = "no" ]
При установке пакета для пользователя oneadmin генерируется случайный пароль в файле /var/lib/one/.one/one_auth. Чтобы задать свой, перепишите файл до первого запуска служб, позже это не сработает:
sudo -u oneadmin sh -c 'echo "oneadmin:ВашСложныйПароль" > /var/lib/one/.one/one_auth'
chmod 600 /var/lib/one/.one/one_auth
Права на oned.conf не меняйте: в нём лежит пароль от базы.
Шаг 6. Запуск и проверка
systemctl enable --now opennebula opennebula-fireedge opennebula-gate opennebula-flow
sudo -u oneadmin oneuser show
# примерно так:
# USER 0 INFORMATION
# ID : 0
# NAME : oneadmin
# GROUP : oneadmin
# ...
ss -tlnp | grep -E '2633|2616|5030|2474'
Порты фронтенда:
| Порт | Служба | Кому открыть |
|---|---|---|
| 2633 | oned, XML-RPC API | Только фронтенду и доверенным системам |
| 2616 | FireEdge (Sunstone) | Администраторам и пользователям, через TLS-прокси |
| 5030 | OneGate | Виртуальным машинам |
| 2474 | OneFlow | Только локально или администраторам |
Веб-интерфейс будет доступен по адресу http://адрес-фронтенда:2616/fireedge/sunstone. Публиковать его в интернет по HTTP без шифрования нельзя: логин и пароль администратора облака пойдут открытым текстом. Поставьте перед ним Nginx с TLS-сертификатом и ограничьте доступ по адресам или VPN, а порт 2616 закройте снаружи.
Добавление узла KVM
Шаг 1. Пакеты на узле
На каждом узле (Ubuntu 24.04) подключите тот же репозиторий, что в шаге 2 фронтенда, и поставьте пакет узла:
apt update
apt install -y opennebula-node-kvm
systemctl restart libvirtd
Пакет ставит QEMU/KVM, libvirt, создаёт пользователя oneadmin и нужные правила sudo. Проверьте, что KVM доступен: ls -l /dev/kvm и grep -cE 'vmx|svm' /proc/cpuinfo.
Шаг 2. Сетевой мост
ВМ подключаются к Linux-мосту на узле. На Ubuntu 24.04 он настраивается в netplan, например /etc/netplan/01-br0.yaml:
network:
version: 2
ethernets:
eno1:
dhcp4: false
bridges:
br0:
interfaces: [eno1]
addresses: [192.168.10.21/24]
routes:
- to: default
via: 192.168.10.1
nameservers:
addresses: [192.168.10.1]
Перед применением выставьте файлу права 600 (chmod 600 /etc/netplan/01-br0.yaml), иначе netplan предупредит, что конфиг доступен всем. Применяйте через netplan try: если связь пропадёт, настройки откатятся через 120 секунд. Имя моста должно совпадать на всех узлах.
Шаг 3. SSH между фронтендом и узлами
Фронтенд управляет узлами по SSH от oneadmin без пароля. Ключ генерируется при установке пакета на фронтенде, лежит в /var/lib/one/.ssh/. На фронтенде:
sudo -iu oneadmin
ssh-keyscan one-fe node01 node02 >> ~/.ssh/known_hosts
cat ~/.ssh/id_rsa.pub
Содержимое публичного ключа добавьте на каждом узле в /var/lib/one/.ssh/authorized_keys (владелец oneadmin, права 600). Скопируйте туда же файл known_hosts, чтобы узлы могли ходить друг к другу при миграции. Проверка с фронтенда:
sudo -u oneadmin ssh node01 hostname
# должно вывести имя узла без вопросов и пароля
Если вы управляете гипервизорами и через virt-manager, пригодится статья о virt-manager на удалённом хосте по SSH.
Шаг 4. Регистрация узла
sudo -u oneadmin onehost create node01 -i kvm -v kvm
sudo -u oneadmin onehost list
# примерно так:
# ID NAME CLUSTER TVM ALLOCATED_CPU ALLOCATED_MEM STAT
# 0 node01 default 0 0 / 800 (0%) 0K / 31G (0%) on
В течение минуты статус должен смениться с init на on. Если появился err, смотрите /var/log/one/oned.log — почти всегда это SSH или отсутствие KVM на узле.
Первая виртуальная машина
Создайте виртуальную сеть на мосту br0. Файл lan.tmpl:
NAME = "lan"
VN_MAD = "bridge"
BRIDGE = "br0"
AR = [ TYPE = "IP4", IP = "192.168.10.100", SIZE = "50" ]
NETWORK_ADDRESS = "192.168.10.0"
NETWORK_MASK = "255.255.255.0"
GATEWAY = "192.168.10.1"
DNS = "192.168.10.1"
sudo -u oneadmin onevnet create lan.tmpl
sudo -u oneadmin onemarketapp list | grep -i debian
sudo -u oneadmin onemarketapp export <ID> debian -d default
Экспорт приложения из Marketplace создаёт образ и шаблон ВМ. Дальше удобнее в Sunstone: Templates → выбрать шаблон → Instantiate, указать сеть lan. Диск ВМ можно заменить своим qcow2 — про форматы и конвертацию в статье об образах дисков QEMU-KVM, Xen и VMDK.
Для живой миграции между узлами нужно общее хранилище (NFS, Ceph и т. п.). В простой конфигурации образы копируются на узел по SSH. Это работает, но миграция идёт с копированием дисков и занимает больше времени.
Бэкап фронтенда
Всё состояние облака хранится на фронтенде: база, конфиги и ключи. Если потерять фронтенд без копии, ВМ на узлах продолжат работать, но управлять ими будет нечем. Минимальный набор для резервного копирования:
- дамп базы:
onedb backup(сохраняет базу в файл, параметры подключения берёт изoned.conf) или обычныйmariadb-dump opennebula; - каталог
/etc/one/— все конфиги служб; - каталог
/var/lib/one/.one/и/var/lib/one/.ssh/— ключи и учётные данныеoneadmin; - образы из datastore
default, если они не лежат на отдельном общем хранилище.
sudo -u oneadmin onedb backup /var/backups/one-$(date +%F).sql
tar czf /var/backups/one-etc-$(date +%F).tar.gz /etc/one /var/lib/one/.one /var/lib/one/.ssh
Храните копии вне фронтенда и раз в квартал проверяйте восстановление на тестовой машине.
Отличия для Debian и AlmaLinux
Пакеты и команды одинаковые, меняется только подключение репозитория и способ настройки сети.
| Ubuntu 24.04 / Debian 12–13 | AlmaLinux / RHEL 9–10 | |
|---|---|---|
| Репозиторий | /etc/apt/sources.list.d/opennebula.list, путь .../7.4/Ubuntu/24.04 или .../7.4/Debian/13 | /etc/yum.repos.d/opennebula.repo, baseurl=https://downloads.opennebula.io/repo/7.4/RedHat/$releasever/$basearch |
| Дополнительно | — | crb enable перед установкой |
| Установка | apt install | dnf install (те же имена пакетов) |
| Мост на узле | netplan (Ubuntu), /etc/network/interfaces (Debian) | NetworkManager: nmcli connection add type bridge ... |
| Конфиг MariaDB | /etc/mysql/mariadb.conf.d/ | /etc/my.cnf.d/ |
Файл репозитория для AlmaLinux:
[opennebula]
name=OpenNebula Community Edition
baseurl=https://downloads.opennebula.io/repo/7.4/RedHat/$releasever/$basearch
enabled=1
gpgkey=https://downloads.opennebula.io/repo/repo2.key
gpgcheck=1
repo_gpgcheck=1
SELinux на AlmaLinux отключать целиком не нужно. Если что-то блокируется, смотрите ausearch -m avc -ts recent и решайте конкретную проблему.
Типичные проблемы
| Симптом | Причина | Решение |
|---|---|---|
Узел в статусе err | Нет SSH без пароля от oneadmin или узел не в known_hosts | Проверить sudo -u oneadmin ssh node01, поправить ключи |
oned не стартует после правки конфига | Ошибка в блоке DB или нет доступа к MariaDB | journalctl -u opennebula, /var/log/one/oned.log, проверить логин в MariaDB |
| Не подходит пароль oneadmin в Sunstone | one_auth изменили после первого запуска | Сменить пароль командой oneuser passwd 0 'новый' |
ВМ висит в PENDING | Нет узла в статусе on или не хватает ресурсов/места в datastore | onehost list, onedatastore list, причина в onevm show ID |
ВМ в FAILURE при запуске | Нет моста на узле или не тот BRIDGE в сети | Сравнить ip -br link на узле и шаблон сети |
| apt: ошибка подписи репозитория | Ключ не скачан или неверный путь в signed-by | Повторить импорт ключа в /etc/apt/keyrings/opennebula.gpg |
Если вам нужен не облачный портал, а просто несколько серверов с ВМ под управлением администратора, проще взять Proxmox — см. установку Proxmox VE на свой сервер.
Частые вопросы
Чем OpenNebula отличается от Proxmox?
Proxmox — гипервизор с веб-интерфейсом для администратора: вы управляете конкретными узлами и ВМ. OpenNebula — слой облака поверх гипервизоров: группы, квоты, каталог шаблонов, самообслуживание пользователей, API. Если ВМ создаёте только вы, Proxmox проще. Если нужен портал для команд или клиентов, лучше подходит OpenNebula.
Чем Community Edition отличается от Enterprise?
CE бесплатна и собирается из того же открытого кода. Enterprise Edition доступна по подписке и включает дополнительные корректирующие выпуски, проверенные сборки и поддержку. Для лабораторий и небольших облаков хватает CE, но обновления в ней выходят реже.
Куда делся старый Sunstone на Ruby?
Его удалили в OpenNebula 7.0. Теперь веб-интерфейс Sunstone работает на сервере FireEdge (пакет opennebula-fireedge, порт 2616). Старые инструкции с opennebula-sunstone и портом 9869 для 7.x не подходят.
Можно ли поставить фронтенд и узел на один сервер?
Да, так и работает miniONE. Для тестов и небольших стендов это нормально. В продакшене лучше вынести фронтенд отдельно: проблема на гипервизоре тогда не уронит управление облаком.
Нужен ли SQLite или сразу MariaDB?
SQLite подходит для miniONE и экспериментов. Для любого облака, которое будет жить дольше недели, сразу ставьте MariaDB или MySQL: переносить базу с SQLite потом сложнее, а под нагрузкой SQLite работает медленнее.
Как обновить OpenNebula до новой версии?
Остановите службы и сделайте бэкап базы и каталога /etc/one. Затем смените версию в адресе репозитория, обновите пакеты и выполните onedb upgrade. Точный порядок для каждой версии описан в разделе Upgrade документации docs.opennebula.io. Перескакивать через несколько версий без чтения заметок к выпуску не стоит.