Установка Cockpit на Debian 13 (Trixie) делается через стандартные репозитории, но для полноценной работы (особенно модулей виртуализации) нужно включить несколько пакетов и настроить firewall. Ниже — полный, аккуратный, технически корректный набор команд, ориентированный на твой стиль работы.
🖥️ Установка Cockpit на Debian 13
1) Обнови систему
Код
sudo apt update && sudo apt upgrade -y
2) Установи Cockpit
Debian 13 уже содержит пакет в официальных репозиториях:
Код
sudo apt install cockpit -y
3) Установи полезные модули Cockpit
Код
sudo apt install cockpit-pcp cockpit-networkmanager cockpit-storaged cockpit-packagekit -y
Если планируешь виртуализацию:
Код
sudo apt install cockpit-machines qemu-system libvirt-daemon-system libvirt-clients -y
sudo systemctl enable --now libvirtd
Если используешь контейнеры:
Код
sudo apt install cockpit-podman podman -y
🔐 4) Разреши доступ к веб‑панели
Cockpit слушает порт 9090.
Если у тебя включён UFW:
Код
sudo ufw allow 9090/tcp
Если используется firewalld:
Код
sudo firewall-cmd --add-service=cockpit --permanent
sudo firewall-cmd --reload
🚀 5) Запусти Cockpit
Cockpit использует systemd socket activation, поэтому запускать вручную не нужно, но можно проверить:
Код
sudo systemctl status cockpit.socket
Открой в браузере:
Код
https://<IP_сервера>:9090
Вход — обычный системный пользователь с sudo.
📦 6) (Опционально) Включи мониторинг PCP
Это даст графики CPU, RAM, IO, сеть:
Код
sudo systemctl enable --now pcp
Для возможности устанавливать виртуальные машины стоит добавть..
Коротко: Ошибка означает, что libvirt default network не запущена, поэтому установка виртуальной машины через Cockpit/libvirt завершается неудачно. На Proxmox это нормально, потому что PVE не использует libvirt, и его default‑сеть обычно отключена.
🛠️ Что происходит
Libvirt пытается использовать виртуальную сеть default, но:
- она не активна,
- она не создана (часто на Proxmox),
- или libvirt вообще не должен использоваться, потому что Proxmox работает через
pvedaemonиqemu-server, а не через libvirt.
🟢 Решение (если хочешь использовать libvirt в Cockpit)
Активируй сеть:
Код
sudo virsh net-start default
sudo virsh net-autostart default
Если сети нет — создай её:
Код
sudo virsh net-define /usr/share/libvirt/networks/default.xml
sudo virsh net-start default
sudo virsh net-autostart default
🔴 Важно для Proxmox
На Proxmox VE:
- libvirt не используется для виртуалок,
- Cockpit‑модуль
cockpit-machinesне работает с Proxmox VM, - любые попытки создать VM через Cockpit → ошибки libvirt.
То есть ошибка нормальная, потому что ты пытаешься использовать libvirt в системе, где виртуализация управляется Proxmox.
Ещё нюанс
Понял, Alex — ты поставил Cockpit на реальную машину, а не на Proxmox‑хост. Это полностью меняет картину: libvirt на обычном Debian/Ubuntu работает нормально, но ошибка указывает на конкретную проблему — AppArmor блокирует доступ QEMU к ISO в твоём домашнем каталоге.
Сеть default у тебя активна, всё ок:
Код
default active yes yes
Но VM всё равно не создаётся, потому что QEMU не может открыть ISO из /home/alex/images/.
🧩 Почему это происходит на реальной машине
Даже на обычном Debian:
- libvirt запускает QEMU под профилем AppArmor
- AppArmor запрещает доступ к /home/
- QEMU может читать ISO только из разрешённых директорий, например:
/var/lib/libvirt/images//var/lib/libvirt/boot//var/lib/libvirt/filesystems/
Cockpit → libvirt → QEMU → AppArmor → Permission denied
🟢 Решение: перемести ISO в разрешённый каталог
1) Создай каталог (если нет)
Код
sudo mkdir -p /var/lib/libvirt/images
2) Перемести ISO
Код
sudo cp /home/alex/images/debian-13.5.0-amd64-netinst.iso /var/lib/libvirt/images/
3) Дай правильные права
Код
sudo chown libvirt-qemu:libvirt-qemu /var/lib/libvirt/images/debian-13.5.0-amd64-netinst.iso
4) Проверка
Код
ls -l /var/lib/libvirt/images/
После этого Cockpit сможет создать VM.
🧩 Почему Cockpit не может использовать ISO из /home
Потому что AppArmor профили libvirt содержат правило:
Код
deny /home/** r,
Это сделано для безопасности, чтобы QEMU не мог читать пользовательские файлы.
🟣 Если хочешь отключить AppArmor для libvirt (не рекомендую)
Можно временно перевести профиль в complain‑mode:
Код
sudo aa-complain /etc/apparmor.d/usr.sbin.libvirtd
Но лучше не трогать AppArmor, а просто использовать правильный каталог.
🟢 Итог
- Cockpit на реальной машине работает нормально.
- Сеть
defaultактивна — всё хорошо. - Ошибка вызвана AppArmor → ISO в /home → Permission denied.
- Перемести ISO в
/var/lib/libvirt/images/→ VM создастся.
Если Cockpit работает через реверс-прокси, важно учесть один момент
Короткий вывод: у тебя включён cockpit-tls, и это гарантированно вызывает бесконечный редирект при работе через Apache reverse proxy. Cockpit в твоей конфигурации сам поднимает HTTPS, хотя ты уже завернул его в HTTPS через Apache. В итоге:
- браузер → Apache (HTTPS)
- Apache → Cockpit (HTTP)
- Cockpit видит HTTP → делает редирект на HTTPS
- Apache → снова HTTP → Cockpit → снова редирект
- цикл
Это 100% причина твоей проблемы.
🔥 Что показывает твой cockpit.service
Вот ключевая строка:
Код
ExecStart=/usr/lib/cockpit/cockpit-tls
Это означает:
❌ Cockpit работает в режиме TLS
❌ Cockpit сам генерирует сертификат
❌ Cockpit слушает HTTPS через socket activation
❌ Cockpit будет перенаправлять HTTP → HTTPS всегда
Это несовместимо с reverse proxy.
✔ Как должно быть в правильной конфигурации
Cockpit должен запускаться так:
Код
ExecStart=/usr/lib/cockpit/cockpit-ws --no-tls
То есть:
- Cockpit работает только HTTP
- TLS полностью обрабатывает Apache
- Cockpit получает заголовки
X-Forwarded-* - Нет редиректов
🧱 Почему у тебя включён cockpit-tls
Потому что в твоём cockpit.service есть строки:
Код
Requires=cockpit-wsinstance-http.socket cockpit-wsinstance-https-factory.socket
ExecStartPre=+/usr/lib/cockpit/cockpit-certificate-ensure --for-cockpit-tls
ExecStart=/usr/lib/cockpit/cockpit-tls
Это означает:
- Cockpit автоматически включает HTTPS‑фабрику
- Cockpit генерирует сертификаты
- Cockpit запускает TLS‑обёртку поверх
cockpit-ws
Это стандартная конфигурация Debian/Ubuntu, но она не подходит для reverse proxy.
🛠 Как исправить (пошагово)
1) Создать override для cockpit.service
Код
systemctl edit cockpit.service
Вставить:
Код
[Service]
ExecStart=
ExecStart=/usr/lib/cockpit/cockpit-ws --no-tls
Сохранить.
2) Отключить HTTPS‑фабрику
Код
systemctl disable --now cockpit-wsinstance-https-factory.socket
3) Перезапустить Cockpit
Код
systemctl daemon-reload
systemctl restart cockpit
4) Проверить
Код
ss -tlnp | grep cockpit
Должно быть:
Код
LISTEN ... 9090 cockpit-ws
И не должно быть:
Код
LISTEN ... 9091 cockpit-tls
LISTEN ... 9090 cockpit-tls
🧩 После этого твой Apache‑конфиг будет работать идеально
Но обязательно добавь WebSocket‑проксирование:
Код
ProxyPass "/socket" "ws://192.168.0.162:9090/socket"
ProxyPassReverse "/socket" "ws://192.168.0.162:9090/socket"
И заголовки:
Код
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-SSL "on"
Полная очистка Cockpit в Debian 13 (идеальный порядок)
Коротко: это нормально, что cockpit-session и cockpit-tls не находятся — в Debian 13 эти компоненты не существуют как отдельные пакеты. Но если твоя цель — полностью очистить систему от Cockpit, включая ВСЕ юниты, каталоги, сертификаты, сокеты, PAM‑конфиги и остаточные файлы, то я дам тебе полный, гарантированно рабочий чек‑лист, который удаляет Cockpit целиком, без единого следа.
🎯 Полная очистка Cockpit в Debian 13 (идеальный порядок)
Ниже — точный набор действий, который удаляет Cockpit полностью.
🧹 1. Удаление всех пакетов Cockpit
Debian 13 содержит только эти реальные пакеты:
Код
apt purge cockpit cockpit-ws cockpit-system cockpit-networkmanager cockpit-packagekit cockpit-storaged cockpit-bridge cockpit-doc
Пакетов:
cockpit-sessioncockpit-tlscockpit-pcp
в Debian нет, поэтому ошибки — нормальны.
🧹 2. Авто‑удаление зависимостей
Код
apt autoremove --purge
🧹 3. Удаление всех каталогов Cockpit
Код
rm -rf /etc/cockpit
rm -rf /usr/lib/cockpit
rm -rf /usr/share/cockpit
rm -rf /run/cockpit
rm -rf /var/lib/cockpit
rm -rf /var/log/cockpit
🧹 4. Удаление всех systemd‑юнитов Cockpit
Debian ставит юниты в /usr/lib/systemd/system/:
Код
rm -f /usr/lib/systemd/system/cockpit.service
rm -f /usr/lib/systemd/system/cockpit.socket
rm -f /usr/lib/systemd/system/cockpit-wsinstance-http.socket
rm -f /usr/lib/systemd/system/cockpit-wsinstance-https-factory.socket
rm -f /usr/lib/systemd/system/cockpit-issue.service
rm -f /usr/lib/systemd/system/cockpit-certificate-ensure.service
🧹 5. Удаление кастомных юнитов и override
Код
rm -rf /etc/systemd/system/cockpit.service.d
rm -f /etc/systemd/system/cockpit.service
rm -f /etc/systemd/system/cockpit.socket
rm -f /etc/systemd/system/cockpit-wsinstance-http.socket
rm -f /etc/systemd/system/cockpit-wsinstance-https-factory.socket
🧹 6. Удаление PAM‑конфига Cockpit
Код
rm -f /etc/pam.d/cockpit
🧹 7. Удаление сертификатов Cockpit
Код
rm -rf /etc/cockpit/ws-certs.d
🧹 8. Перезагрузка systemd
Код
systemctl daemon-reload
systemctl reset-failed
🧹 9. Проверка, что Cockpit полностью исчез
Код
systemctl list-unit-files | grep cockpit
systemctl status cockpit
systemctl status cockpit.socket
dpkg -l | grep cockpit
Все команды должны показывать пусто.
✔ Итог
После выполнения всех шагов:
- Cockpit полностью удалён
- ни одного юнита
- ни одного сокета
- ни одного каталога
- ни одного сертификата
- ни одного PAM‑конфига
- ни одного процесса
- ни одной зависимости
Система полностью чистая.
