Cockpit/Apache Reverse Proxy Setup

March 14, 2022 - Reading time: ~1 minute

I had a hard time finding the information I needed to get Cockpit to work right behind an Apache reverse proxy setup. So, I decided to collect everything I found here for the future.

At first, I tried to setup cockpit under the /cockpit path but it kept failing. Apparently, that path is reserved by Cockpit, so I switched to using /ckpt/ instead.

  1. Create config file: /etc/cockpit/cockpit.conf
  2. Add contents:
    [WebService]
    Origins = https://mydomain.com http://127.0.0.1:9090
    ProtocolHeader = X-Forwarded-Proto
    AllowUnencrypted = true
    UrlRoot = /ckpt/
  3. Restart Cockpit
  4. Add Apache directives to chosen VirtualHost:
    ProxyPreserveHost On
    ProxyRequests Off
    SSLProxyVerify None
    SSLProxyCheckPeerCN Off
    SSLProxyCheckPeerName Off
    SSLProxyCheckPeerExpire Off
    RewriteEngine On
    RewriteCond %{HTTP:Upgrade} =websocket [NC]
    RewriteRule /ckpt/(.*) ws://127.0.0.1:9090/ckpt/$1 [P,L]
    RewriteCond %{HTTP:Upgrade} !=websocket [NC]
    RewriteRule /ckpt/(.*) http://127.0.0.1:9090/ckpt/$1 [P,L]
    ProxyPass /ckpt/ http://127.0.0.1:9090/ckpt/
    ProxyPassReverse /ckpt/ http://127.0.0.1:9090/ckpt/
  5. Restart Apache

Categories