好物推荐 - cockpit

一款基于 web 的服务器管理工具

背景

一直以来,我对于Linux服务器管理都是使用ssh远程登陆服务器,然后通过命令行进行操作。但是这种方式不但繁琐得要死,而且很不直观,很难直观的观察整个服务器的状态。于是我就在网上找服务器web ui,通过不断的努力,终于让我找到了一个不错的开源软件 - cockpit。

其实这里很多人会说宝塔、1panel 之类的,但实际上很多人都有个误区:网站管理 =/= 服务器管理。

cockpit介绍

IMG_20231211_163334

cockpit是红帽推出的免费开源的Linux服务器web 管理工具,包括查看系统状态、管理存储空间(包括 raid、nfs 等)、查询日志、用户帐户管理、服务管理、软件更新等功能,最重要的是其还自带一个基于 web 的终端,可以实现所有通过 ssh 远程管理服务器的功能。

cockpit不但可以管理单台服务器,还可以通过添加本地或远程其他服务器实现集中式管理,不再需要一一登陆不同服务器,单次登陆即可实现在不同服务器之间无缝切换。

cokcpit简单易用,可以通过插件扩展功能,以实现如虚拟机管理、文件共享等功能。同时由于cockpit 是基本 web 的,所以可以实现在不同终端对服务器进行管理。

cockpit安装

cockpit现在开发比较活跃,版本更新较快,所以系统自带仓库的版本可能比较落后。以我的Ubuntu服务器为例,需要使用backports仓库才能下载最新的版本。

1
2
3
4
5
6
# install cockpit
sudo apt install -t jammy-backports cockpit
# 虚拟机管理
sudo apt install -t jammy-backports cockpit-machines
# 开启服务
sudo systemctl enable cockpit.service cockpit-wsinstance-http.service.service --now

其他Linux发行版本的具体安装方法,可以参考官方文档

这里有一点可惜的地方,cockpit 不支持 Docker 管理。本来是有个cockpit-docker的插件,但官方将其抛弃了,投入了podman的怀抱。不过没关系,下期我再介绍个 docker 管理工具。

Nginx反向代理

cockpit默认监听9090端口,在上一步安装完成后就可以通过ip:9090访问服务器了,为了更方便对服务器进行管理,同时避免修改端口规则,我们可以通过Ningx反向代理来访问cockpit

子域名访问

这个应该是最简单的

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name <your domain>;

    # ssl设置
    ...

    location / {
        proxy_pass          http://127.0.0.1:9090;
        
        proxy_http_version  1.1;
        proxy_set_header    Upgrade             $http_upgrade;
        proxy_set_header    Connection          "upgrade";
        
        proxy_set_header    Host                $host:$server_port;
        proxy_set_header    X-Real-IP           $remote_addr;
        proxy_set_header    X-Real-PORT         $remote_port;
        
        proxy_set_header    X-Forwarded-Host    $http_host;
        proxy_set_header    X-Forwarded-Proto   $scheme;
        proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;

        # https://github.com/cockpit-project/cockpit/wiki/Proxying-Cockpit-over-NGINX
        proxy_buffering     off;
        gzip off;
    }
}

通过你的子域名直接访问服务器。

子目录访问

添加以下内容到你的server中:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
    location /cockpit/ {
        proxy_pass          http://127.0.0.1:9090;
        proxy_http_version  1.1;
        proxy_set_header    Upgrade             $http_upgrade;
        proxy_set_header    Connection          "upgrade";
        
        proxy_set_header    Host                $host:$server_port;
        proxy_set_header    X-Real-IP           $remote_addr;
        proxy_set_header    X-Real-PORT         $remote_port;
        
        proxy_set_header    X-Forwarded-Host    $http_host;
        proxy_set_header    X-Forwarded-Proto   $scheme;
        proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
        
        proxy_buffering off;
        gzip off;
    }

通过<yours domain>/cockpit/即可访问你的服务器了。

集群管理

如果你的服务器是作为集群的一部分,通过其他机器的cockpit访问,则无需配置Ningx反向代理和端口,只需要添加主控机器的 ssh key到服务器即可。

1
2
3
4
# 生成ssh key,一路回车即可
ssh-keygen
# 将key拷贝到远程服务器
ssh-copy-id -p <ssh 端口> <用户名>@<服务器IP>

然后在主控机器上添加新服务器即可:

IMG_20231211_170658

结束

剩下的就是好好享受 cockpit 了。

我个人对 cockpit 比较满意的是:

  1. 轻量级、可扩展、大厂出品;
  2. 简单易上手,根本没有学习成本;
  3. 极大的解放双手,同时提高效率;
  4. 集群管理,单点登陆真的很方便;
  5. 集成终端,没有什么是不可能的;

最后更新于 2023-12-13
小酌怡情
Built with Hugo
主题 StackJimmy 设计
访问量 -    访客数 - 人次