背景
一直以来,我对于Linux服务器管理都是使用ssh
远程登陆服务器,然后通过命令行进行操作。但是这种方式不但繁琐得要死,而且很不直观,很难直观的观察整个服务器的状态。于是我就在网上找服务器web ui,通过不断的努力,终于让我找到了一个不错的开源软件 - cockpit。
其实这里很多人会说宝塔、1panel 之类的,但实际上很多人都有个误区:网站管理 =/= 服务器管理。
cockpit介绍
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>
|
然后在主控机器上添加新服务器即可:
结束
剩下的就是好好享受 cockpit 了。
我个人对 cockpit 比较满意的是:
- 轻量级、可扩展、大厂出品;
- 简单易上手,根本没有学习成本;
- 极大的解放双手,同时提高效率;
- 集群管理,单点登陆真的很方便;
- 集成终端,没有什么是不可能的;