RTFM.WIKI

Ordnung muß sein. Ordnung über alles (18+)

Инструменты пользователя

Инструменты сайта


Stylesheet conf/userstyle.css not found, please contact the developer of "dokuwiki_2024" template.
linux:ubuntu:cockpit

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
linux:ubuntu:cockpit [2022/04/19 17:05] – создано dxlinux:ubuntu:cockpit [2022/07/10 18:01] (текущий) dx
Строка 1: Строка 1:
 +====== Установка Cockpit в 20.04 через Backports ======
  
 +===== Постановка задачи =====
 +
 +Запустить Cockpit подкаталоге, например https://foobar.com/cp/
 +
 +Система Ubuntu 20.04, веб-сервер Apache.
 +
 +Сразу оставлю ссылки по проксированию через apache и nginx
 +
 +  * [[https://github.com/cockpit-project/cockpit/wiki/Proxying-Cockpit-over-Apache-with-LetsEncrypt|Proxying Cockpit over Apache with LetsEncrypt]]
 +  * [[https://github.com/cockpit-project/cockpit/wiki/Proxying-Cockpit-over-nginx|Proxying Cockpit over nginx]]
 +
 +В документации Cockpit указано, что нельзя использовать ''/cockpit/'' или ''/cockpit+'' в качестве подкаталога, поскольку они зарезервированы. Поэтому в моём примере будет использоваться ''/cp/''
 +
 +===== Установка =====
 +
 +Backports репозиторий должен быть включен по-умолчанию
 +
 +<code>
 +# apt-cache policy | grep http | awk '{print $2" "$3}' | sort -u | grep backport
 +https://mirror.hetzner.com/ubuntu/packages focal-backports/main
 +https://mirror.hetzner.com/ubuntu/packages focal-backports/universe
 +</code>
 +
 +Если нету, то добавляем в ''/etc/apt/sources.list''
 +
 +<code>
 +deb http://archive.ubuntu.com/ubuntu focal-backports main restricted universe multiverse
 +</code>
 +
 +Устанавливаем Cockpit
 +
 +<code>
 +apt-get update
 +apt-get install -t focal-backports cockpit
 +</code>
 +
 +Лучше с **--no-install-recommends**, а то слишком много лишнего.
 +
 +===== Файл настроек =====
 +
 +Создаём файл ''/etc/cockpit/cockpit.conf''
 +
 +<code>
 +[WebService]
 +Origins = https://foobar.com http://127.0.0.1:9090
 +ProtocolHeader = X-Forwarded-Proto
 +AllowUnencrypted = true
 +UrlRoot = /cp/
 +RequireHost = false
 +LoginTo = false
 +</code>
 +
 +  * **RequireHost** - если установлено значение false, то не потребуется указывать хост для входа.
 +  * **LoginTo** - если установлено значение false, то на экране входа не будет выводиться опция Connect to, которая позволяет при необходимости подключаться к удаленным хостам.
 +
 +Описание опций [[https://cockpit-project.org/guide/latest/cockpit.conf.5.html|доступно здесь]].
 +
 +===== Проксируем через Apache =====
 +
 +Важный момент. Не забудьте активировать **proxy_wstunnel**. Не везде об этом пишут.
 +
 +<code bash>a2enmod proxy proxy_wstunnel proxy_http ssl rewrite</code>
 +
 +Настройки для Apache
 +
 +<code bash>
 +ProxyPreserveHost       On
 +ProxyRequests           Off
 +
 +SSLProxyVerify          None
 +SSLProxyCheckPeerCN     Off
 +SSLProxyCheckPeerName   Off
 +SSLProxyCheckPeerExpire Off
 +
 +# allow for upgrading to websockets
 +RewriteEngine On
 +RewriteCond %{HTTP:Upgrade}    =websocket [NC]
 +RewriteRule /cp/(.*)           ws://127.0.0.1:9090/cp/$1 [P,L]
 +RewriteCond %{HTTP:Upgrade}    !=websocket [NC]
 +RewriteRule /cp/(.*)           http://127.0.0.1:9090/cp/$1 [P,L]
 +
 +# Proxy to your local cockpit instance
 +ProxyPass        /cp/          http://127.0.0.1:9090/cp/
 +ProxyPassReverse /cp/          http://127.0.0.1:9090/cp/
 +</code>
 +
 +Если вы хотите использовать TLS за обратным прокси, то нужно заменить http на https, а ws на wss. Кроме того, необходимо удалить директивы SSLProxy.
 +
 +Также необходимо скопировать сертификат и ключ в ''/etc/cockpit/ws-certs.d''.
 +
 +<code bash>
 +cp /etc/letsencrypt/live/foobar.com/fullchain.pem /etc/cockpit/ws-certs.d/foobar.com.crt
 +cp /etc/letsencrypt/live/foobar.com/privkey.pem   /etc/cockpit/ws-certs.d/foobar.com.key
 +chown cockpit-ws:cockpit-ws /etc/cockpit/ws-certs.d/foobar.com.crt /etc/cockpit/ws-certs.d/foobar.com.key
 +</code>
 +
 +Вроде бы есть специальная команда remotectl для проверки какой сертификат использует Cockpit, но это же Ubuntu :) У меня не сработало.
 +
 +Вывод должен быть такой
 +
 +<code bash>
 +# remotectl certificate
 +certificate: /etc/cockpit/ws-certs.d/foobar.crt
 +</code>
 +
 +<code bash>systemctl restart cockpit</code>
 +
 +При обновлении сертификата LE нам также необходимо обновить их в Cockpit. Для этого добавим hook в ''/etc/letsencrypt/renewal-hooks/post/restart-cockpit.sh''
 +
 +<code bash>
 +#!/usr/bin/env bash
 +
 +echo "SSL certificate update"
 +
 +cp /etc/letsencrypt/live/foobar.com/fullchain.pem /etc/cockpit/ws-certs.d/foobar.com.crt
 +cp /etc/letsencrypt/live/foobar.com/privkey.pem   /etc/cockpit/ws-certs.d/foobar.com.key
 +chown cockpit-ws:cockpit-ws /etc/cockpit/ws-certs.d/foobar.com.crt /etc/cockpit/ws-certs.d/foobar.com.key
 +
 +echo "Restarting Cockpit"
 +systemctl restart cockpit
 +</code>
 +
 +{{:linux:ubuntu:ubuntu_cockpit_login.png?nolink|}}
 +
 +EOM
 +
 +{{tag>ubuntu apache cockpit control_panel панель_управления}}