Home Telegram Scroll Top

Cockpit安装配置速记

事情起因是手头服务器日渐增多,需要一个一站式管理面板。我管理需求不复杂,能看一些基本状态、能管理文件和使用shell即可,主要是一站式管理。

调研了目前存在的产品,各种面板开源不开源的很多,但能一管多的面板不多。最后看到了Cockpit完美符合我的需求。它是RedHat扶持的开源面板项目,在红帽8和CentOS8中是默认面板。界面也是简洁精致,功能非常强大。

话不多说,这篇文章是速记一些安装配置,以便大家参考。其实官网上有各种安装配置的文档,大家可以去具体翻翻。

这里记录我自己用到的Ubuntu系统。成品:https://cockpit.zhile.io

安装

参考文档:https://cockpit-project.org/running.html#ubuntu

. /etc/os-release
sudo apt install -t ${VERSION_CODENAME}-backports cockpit

启动

sudo systemctl enable cockpit.socket
sudo systemctl start cockpit.socket

安装插件

Cockpit支持插件,目前有一批官方和第三方的插件,具体列表:https://cockpit-project.org/applications.html
目前我就用到了一个Cockpit Navigator插件,用来网页上管理服务器的文件。

wget https://github.com/45Drives/cockpit-navigator/releases/download/v0.5.10/cockpit-navigator_0.5.10-1focal_all.deb
sudo apt install ./cockpit-navigator_0.5.10-1focal_all.deb

配置

Cockpit默认监听0.0.0.0:9090,但我不希望直接暴露端口,想用nginx给它代理出来。所以需要配置一下。参考文档:https://cockpit-project.org/guide/latest/listen.html#listen-systemd

sudo mkdir /etc/systemd/system/cockpit.socket.d
cat << "EOF" | sudo tee /etc/systemd/system/cockpit.socket.d/listen.conf > /dev/null
[Socket]
ListenStream=
ListenStream=127.0.0.1:9090
FreeBind=yes
EOF
sudo systemctl daemon-reload
sudo systemctl restart cockpit.socket

到这里Cockpit就算安装配置好了,所有的节点也只需要如此配置即可。

如果你希望禁止某些用户通过Cockpit页面登录,可以配置/etc/cockpit/disallowed-users,把用户名放进去即可。

cat << "EOF" | sudo tee /etc/cockpit/disallowed-users > /dev/null
# List of users which are not allowed to login to Cockpit
root
EOF

配置反代

我们无需在每台节点安装配置反代,挑选其中一台主控配置即可。先配置一下Cockpit,参考文档:https://cockpit-project.org/guide/latest/cockpit.conf.5.html

cat << "EOF" | sudo tee /etc/cockpit/cockpit.conf > /dev/null
[WebService]
Origins = https://cockpit.zhile.io # 这里改成你自己的地址
ProtocolHeader = X-Forwarded-Proto # 与nginx中一致
ForwardedForHeader = X-Forwarded-For # 与nginx中一致
LoginTo = false
AllowUnencrypted = false # 我使用了https,这里设置为false
EOF
sudo systemctl restart cockpit.socket

然后配置nginx:

server {
    listen 443 ssl http2;
    server_name cockpit.zhile.io;

    charset utf-8;

    ssl_certificate      certs/cockpit.zhile.io.crt;
    ssl_certificate_key  certs/cockpit.zhile.io.key;

    ...省略若干其他配置...

    location /cockpit/socket {
        proxy_http_version  1.1;
        proxy_pass          http://127.0.0.1:9090;
        proxy_set_header    Connection          "upgrade";
        proxy_set_header    Upgrade             http_upgrade;
        proxy_set_header    Host                http_host;
        proxy_set_header    X-Forwarded-Proto   scheme;
        proxy_set_header    X-Forwarded-For     proxy_add_x_forwarded_for;
    }

    location / {
        proxy_http_version  1.1;
        proxy_pass          http://127.0.0.1:9090;
        proxy_set_header    Connection          "";
        proxy_set_header    Host                http_host;
        proxy_set_header    X-Forwarded-Proto   scheme;
        proxy_set_header    X-Forwarded-For     proxy_add_x_forwarded_for;
    }

    ...省略若干其他配置...
}

打完收工~

nginx配置中:

  • http_upgrade 其实是 $http_upgrade
  • http_host 其实是 $http_host
  • scheme 其实是 $scheme
  • proxy_add_x_forwarded_for 其实是 $proxy_add_x_forwarded_for

博客markdown代码块有bug,注意自行添加。

nginx证书什么的自己想办法,现在各种免费的很多。这种涉及服务器管理的,最好还是上https。你看我,上了https还整个域名上cf盾,美滋滋。

强调一下,这种web配置不是每个节点都需要配置,只要配置其中一台即可

分享本文到:

10 评论

留下评论

您的电子邮箱地址不会被公开。 必填项已用*标注


  1. 我用的是next termial,docker部署的,目前用了一个月,感觉还可以,主要是动态身份验证很喜欢。

  2. 我以为cockpit这种东西对于博主这种手底下服务器比较多的人应该是早就用上了🤣

  3. 这个nginx代理配置有点问题,弄好多次不行,都要放弃了,出于对始皇帝技术能力的信任又试了好多次,甚至换了服务器。怎么试都不行,今天晚上心血来潮去试了一下官方的nginx配置一下就搞定了。。。。。。哈哈哈哈哈。。。。