Proxmox VE: ошибка API service not available — диагностика и исправление

Сообщение «API service not available» в Proxmox VE обычно означает, что веб-интерфейс не может связаться с демоном pveproxy или связанными с ним службами кластера — чаще всего проблема возникает после некорректного обновления, переполнения диска или рассинхронизации узлов в кластере. Доступ к виртуальным машинам при этом может сохраняться, но управление через браузер и API становится невозможным.

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

Что означает ошибка и какие службы за неё отвечают

За работу API и веб-интерфейса Proxmox VE отвечает связка из нескольких демонов. Основной — pveproxy, который принимает HTTPS-подключения на порту 8006 и проксирует запросы к остальным компонентам. Рядом работают pvedaemon (обработка API-запросов), pvestatd (сбор статистики) и кластерные службы pmxcfs и corosync, если узел входит в кластер.

Когда браузер показывает «API service not available», это значит, что pveproxy либо не запущен, либо запущен, но не может получить ответ от внутренних сервисов. Вторая ситуация коварнее: служба формально активна, но запросы зависают или возвращают ошибку.

Первичная диагностика через SSH или консоль

Поскольку веб-интерфейс недоступен, вам понадобится доступ к серверу по SSH или через физическую/IPMI-консоль. Первым делом проверьте состояние ключевых служб:

systemctl status pveproxy pvedaemon pvestatd pmxcfs

Если какая-то из служб в состоянии failed или inactive, это уже указывает направление поиска. Дополнительно посмотрите свежие записи журнала — там часто видна первопричина:

journalctl -u pveproxy -n 100 --no-pager
  • 🔍 pveproxy failed — проверяйте сертификаты и свободное место на диске;
  • 🗄️ pmxcfs не стартует — вероятны проблемы с кластерной файловой системой /etc/pve;
  • 🌐 corosync в ошибке — узел потерял связь с кластером или сменился сетевой интерфейс;
  • 💾 службы падают без явной причины — проверьте заполнение корневого раздела.
📊 Что стало причиной ошибки API service not available в вашем случае?
Переполненный диск
Проблемы с сертификатами
Сбой кластера / corosync
Ошибка после обновления

Проверка свободного места на диске

Одна из самых частых и при этом неочевидных причин — переполнение корневого раздела. Когда место заканчивается, pmxcfs не может писать в /etc/pve, службы начинают падать, и API перестаёт отвечать. Проверка занимает секунды:

df -h

Обратите внимание на корневой раздел / и раздел с /var. Типичные «пожиратели» места — старые журналы в /var/log, резервные копии, случайно попавшие на локальный диск, и накопленные пакеты после обновлений. Очистить кэш пакетов можно командой apt clean, а старые журналы — через journalctl --vacuum-time=7d.

⚠️ Внимание: не удаляйте файлы из /etc/pve вручную, пока не убедитесь, что понимаете их назначение. Это виртуальная файловая система pmxcfs, и некорректные действия могут нарушить конфигурацию кластера.

Проблемы с SSL-сертификатами

Демон pveproxy при старте загружает SSL-сертификаты узла. Если файлы сертификатов повреждены, удалены или имеют неверные права, служба может не запуститься, и вы получите ту самую ошибку недоступности API. Стандартные пути — /etc/pve/local/pve-ssl.pem и /etc/pve/local/pve-ssl.key.

Проверьте, существуют ли эти файлы и читаются ли они. Если узел входит в кластер, убедитесь, что pmxcfs смонтирована и каталог /etc/pve доступен — без него pveproxy не найдёт сертификаты. При повреждении сертификата его можно пересоздать штатными средствами Proxmox, но точную команду для вашей версии лучше сверить с официальной документацией, так как синтаксис может отличаться между релизами.

Как понять, что виноват именно сертификат

В журнале pveproxy (journalctl -u pveproxy) появляются строки об ошибках загрузки ключа или сертификата — например, упоминания SSL, PEM или невозможности прочитать файл. Если таких записей нет, а служба просто не стартует молча, чаще виноваты диск или pmxcfs.

Сбои кластера: pmxcfs и corosync

Если сервер входит в кластер, ошибка API нередко связана с потерей кворума или конфликтом corosync. Проверьте состояние кластера:

pvecm status

Если команда сообщает об отсутствии кворума, файловая система /etc/pve переходит в режим только для чтения, и управляющие службы работают некорректно. Типичный сценарий — выключение части узлов кластера или смена IP-адреса/hostname одного из них без правки конфигурации кластера.

Для временной диагностики на одиночном узле, вышедшем из кластера, существует режим local mode для pmxcfs, однако применять его стоит осознанно: это вмешательство в кластерную конфигурацию, и порядок действий зависит от того, планируете ли вы возвращать узел в кластер. Перед любыми операциями с corosync.conf сделайте резервную копию конфигурации.

СимптомВероятная причинаПервое действие
pveproxy в статусе failedПроблема с сертификатами или портом 8006Смотреть journalctl -u pveproxy
Все службы падают разомПереполнен корневой разделВыполнить df -h, очистить место
/etc/pve пуст или read-onlypmxcfs не смонтирована, нет кворумаПроверить pvecm status
Ошибка после обновления пакетовПрерванный apt, битые зависимостиЗапустить apt -f install
API недоступен только из сетиФайрвол или смена IP узлаПроверить iptables и доступность порта 8006

Ошибка после обновления системы

Немало случаев связано с прерванным или неполным обновлением пакетов Proxmox VE. Если обновление оборвалось (перезагрузка, обрыв SSH, переполнение диска в процессе), часть пакетов может остаться в несогласованном состоянии. Проверить и попытаться исправить это можно так:

apt update

apt -f install

dpkg --configure -a

После завершения перезапустите ключевые службы: systemctl restart pveproxy pvedaemon pvestatd. Если apt сообщает о конфликтах репозиториев, убедитесь, что у вас корректно настроены источники пакетов — для установок без подписки должен использоваться репозиторий pve-no-subscription, а enterprise-репозиторий без активной подписки будет выдавать ошибки.

⚠️ Внимание: не выполняйте apt dist-upgrade вслепую на продуктивном сервере с запущенными ВМ. Сначала убедитесь, что у вас есть резервные копии конфигурации и возможность откатиться, а обновления проводите в окно обслуживания.

☑️ Порядок восстановления доступа к API

Выполнено: 0 / 6

Когда ничего не помогло

Если службы стартуют, диск свободен, кластер в порядке, а API по-прежнему недоступен, копайте глубже. Проверьте, не занят ли порт 8006 другим процессом (ss -tlnp | grep 8006), посмотрите общий системный журнал journalctl -xe на предмет ошибок сегментации или нехватки памяти — OOM-killer иногда убивает управляющие демоны на серверах с перегруженной памятью.

Полезно также проверить целостность конфигурации узла в /etc/pve/nodes/ и системные лимиты. В сложных случаях имеет смысл изучить журналы за период, предшествующий появлению ошибки: первопричина (например, внезапная перезагрузка или сбой диска) часто видна задолго до того, как пользователь заметил недоступность веб-интерфейса.

⚠️ Внимание: если сервер является частью продуктивного кластера и вы не уверены в последствиях команд, сначала зафиксируйте текущее состояние (выводы диагностических команд, копии конфигов) и сверьтесь с официальной документацией Proxmox VE для вашей версии. Ошибочные действия с кластерными службами могут затронуть соседние узлы.

Частые вопросы

Виртуальные машины продолжают работать при ошибке API service not available?

Да, в подавляющем большинстве случаев гостевые системы работают штатно — страдает только управляющий слой (веб-интерфейс и API). Однако без доступа к API вы не сможете управлять ВМ, поэтому восстанавливать службы нужно оперативно.

Можно ли просто перезагрузить сервер, чтобы исправить ошибку?

Перезагрузка иногда временно помогает, но если причина в переполненном диске, битых пакетах или потере кворума, ошибка вернётся. Лучше сначала провести диагностику через SSH и устранить первопричину.

Ошибка появляется только при входе через браузер, а по SSH всё работает. Что делать?

Проверьте, слушает ли pveproxy порт 8006 командой ss -tlnp | grep 8006, а также не блокирует ли порт файрвол. Попробуйте перезапустить pveproxy и очистить кэш браузера или открыть интерфейс в режиме инкогнито.

Может ли ошибка быть связана с истёкшей подпиской Proxmox?

Нет, отсутствие подписки не отключает API и веб-интерфейс — она влияет только на доступ к enterprise-репозиторию обновлений. Ошибка недоступности API всегда указывает на техническую проблему со службами, диском или кластером.

Как предотвратить повторение ошибки в будущем?

Настройте мониторинг свободного места на диске, проводите обновления в плановые окна с резервными копиями, следите за состоянием кворума в кластере и периодически проверяйте журналы служб pveproxy и pmxcfs на предмет ранних признаков сбоев.