Cockpit 安装配置教程
前言
最近一年陆陆续续写了一些自己感兴趣的小项目,手头上的服务器慢慢多起来了,于是想找一个好用的工具统一地管理它们。
经过一番搜索发现了 Cockpit 这个工具能满足我的需求,项目主页:https://cockpit-project.org/。
最终效果展示:https://cockpit.cjh.zone。
这篇博客主要是想记录一下安装和配置过程,方便自己以后回看,主要参考资料就是项目的官方文档。
下面贴一段 ChatGPT 对它的介绍:
Cockpit 是一个用于管理 Linux 服务器的简洁而强大的图形化工具。它允许系统管理员通过一个 Web 界面执行各种系统管理任务,而无需在命令行中输入复杂的命令。Cockpit 支持各种操作系统和 Linux 发行版,如 Fedora、RHEL、CentOS、Debian 和 Ubuntu。
Cockpit 的主要用途:
- 系统监控:实时查看 CPU、内存、网络和存储使用情况。
- 日志查看:访问系统日志以诊断和排除问题。
- 服务管理:启动、停止和重启系统服务。
- 网络配置:管理网络接口、查看网络连接和配置防火墙。
- 存储管理:管理硬盘、分区和文件系统。
- 用户管理:添加、删除和修改系统用户和组。
- 软件更新:安装和更新系统软件包。
- 容器管理:支持管理 Docker 和 Podman 容器。
下面记录了我在 Debian 12 上的安装和配置过程,其他系统应该也是大同小异。
安装与更新
参考文档:https://cockpit-project.org/running.html#debian
先启用 backports
软件源:
. /etc/os-release
echo "deb http://deb.debian.org/debian ${VERSION_CODENAME}-backports main" > \
/etc/apt/sources.list.d/backports.list
apt update
安装 Cockpit(后续更新也是这条指令):
apt install -t ${VERSION_CODENAME}-backports cockpit
-t
选项是指定刚才添加的 backports
软件源。
启动并设置开机自启:
systemctl enable cockpit.socket
systemctl start cockpit.socket
经过上面的步骤,Cockpit 应该已经在 9090
端口启动了,可以通过浏览器访问 https://your-server-ip:9090
(如果不能打开就检查一下防火墙配置)。需要注意的是,现在的 ssl 证书是 Cockpit 自签的,浏览器会提示不安全,可以选择继续访问。
另外,Cockpit 默认禁止了 root
用户登录,如果需要可以修改 /etc/cockpit/disallowed-users
中的配置,默认配置是:
# List of users which are not allowed to login to Cockpit
root # 默认禁止了 root 用户登录
Web 服务配置
上面通过 9090
端口访问的是 Cockpit 的 Web 服务,我在我其中的一台机器上使用 nginx 做了反向代理。这么做的原因如下:
-
避免直接暴露 Cockpit 的 Web 服务端口,增加安全性
-
使用 nginx 可以更方便地配置 ssl 证书
需要特别说明的是,你不需要在每台机器上都配置 Web 服务,只需要挑一台你认为合适的机器配置即可。
-
Cockpit 默认监听的是
0.0.0.0:9090
,将其改为127.0.0.1:9090
。参考文档:https://cockpit-project.org/guide/latest/listen。
在配置文件
/etc/systemd/system/cockpit.socket.d/listen.conf
中加入以下内容(可能需要创建一下目录和文件):[Socket] ListenStream= ListenStream=127.0.0.1:9090 FreeBind=yes
第一行
ListenStream=
是清空默认的监听地址,第二行ListenStream=127.0.0.1:9090
是重新指定监听地址。重新加载配置文件并重启服务:
systemctl daemon-reload systemctl restart cockpit.socket
-
Cockpit 反向代理配置:
默认情况下,由于跨域限制,Cockpit 不能被其他域名访问,因此需要在配置文件
/etc/cockpit/cockpit.conf
中加入以下内容(文件不存在就创建一下):[WebService] Origins = https://cockpit.domain.tld wss://cockpit.domain.tld ProtocolHeader = X-Forwarded-Proto
注意将
cockpit.domain.tld
替换为你的域名。参考文档: https://cockpit-project.org/external/wiki/Proxying-Cockpit-over-NGINX,https://cockpit-project.org/guide/latest/cockpit.conf.5.html。
-
nginx 反向代理配置:新建一个 nginx 配置文件
/etc/nginx/conf.d/cockpit.conf
,内容如下:server { listen 80; server_name cockpit.domain.tld; # 将域名替换为你的域名 return 301 https://cockpit.domain.tld$request_uri; # 将域名替换为你的域名 } server { listen 443 ssl http2; server_name cockpit.domain.tld; ssl_certificate /etc/nginx/cert/cockpit.domain.tld/cert.pem; # 将路径替换为你的证书路径 ssl_certificate_key /etc/nginx/cert/cockpit.domain.tld/key.pem; # 将路径替换为你的证书路径 access_log /var/log/nginx/cockpit_access.log; error_log /var/log/nginx/cockpit_error.log; location / { # Required to proxy the connection to Cockpit proxy_pass https://127.0.0.1:9090; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # Required for web sockets to function proxy_http_version 1.1; proxy_buffering off; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; # Pass ETag header from Cockpit to clients. # See: https://github.com/cockpit-project/cockpit/issues/5239 gzip off; } }
重启 nginx 服务:
systemctl restart nginx
添加其他机器
其他机器也需要像前面的步骤安装 Cockpit,但是不需要再进行 Web 服务配置了。
安装好 Cockpit 后,可以在 Web 界面的左侧导航栏中找到 Add Server
,点击后输入其他机器的 IP 地址和用户名密码即可添加。
需要注意的是,如果你的机器的 ssh
端口不是默认的 22
,可以在添加机器时在 IP 地址后加上端口号,例如 192.168.1.1:2222
。
Applications(应用)
我理解 Cockpit 的应用是一些插件,可以扩展 Cockpit 的功能。
可以在:https://cockpit-project.org/applications.html 查看所有的应用。
我只安装了一个应用:
Navigator:https://github.com/45Drives/cockpit-navigator
一个文件管理器,可以在 Cockpit 中管理机器上的文件。
wget https://github.com/45Drives/cockpit-navigator/releases/download/v0.5.10/cockpit-navigator_0.5.10-1focal_all.deb
apt install ./cockpit-navigator_0.5.10-1focal_all.deb
Enjoy Reading This Article?
Here are some more articles you might like to read next: