
Cockpit 服务器运维工具
Cockpit 是一个服务器运维面板,什么意思呢,就是只有运维功能,不能搭建网站,对于希望有一个轻量化的面板来辅助查看服务器信息的人来说会非常友好。其本身十分轻量,而且因为因为是红帽带头搞的,设计上也十分优雅,非常好用,而且完全免费。
目录
Cockpit 的功能
默认的功能其实非常少:
- 网页终端
- 管理服务
- 查看日志
- 重启和关闭服务器
- 系统更新
- 等各种基础功能
但 Cockpit 最厉害的地方在于可以安装插件,安装插件后 Cockpit 能管理的内容就变多了起来:
- 文件管理器
- 防火墙
- Podman 镜像管理
- KVM 虚拟机管理
- 内核转储
- SELinux 管理
- 等各种功能
还是十分值得一试的。
安装 Cockpit
Cockpit 支持一大票的系统,不过因为是红帽主导开发的,对 Fedora 系的系统支持会好不少,例如 Fedora,RHEL,AlmaLinux 等。Ubuntu 和 Debian 也是可以装的,但由于 Cockpit 发展的速度很快,建议使用最新版的系统来操作,否则很可能遇到插件装不上的问题。
Fedora
sudo dnf install cockpitUbuntu
. /etc/os-release
sudo apt install -t ${VERSION_CODENAME}-backports cockpit更多安装命令请参见官网。
启用 Cockpit
我反正只用 SystemD,似乎 Cockpit 的架构也只支持 SystemD。
sudo systemctl enable --now cockpit.socket注意 Cockpit 的主要 SystemD 项目是一个 Socket 而不是 Service,哪天想临时关闭面板的时候也一定要记得同时停止 cockpit.socket 和 cockpit.service,单纯停止后者的话随时会被 cockpit.socket 唤醒。启用和禁用的时候也需要操作 cockpit.socket 而不是 cockpit.service,后者是一个静态服务,不能被启用或者禁用。
访问面板
默认端口号是 9090,自签名 SSL 证书,无视风险继续即可。
然后输入任何一个拥有完整 sudo 权限或 root 账户的凭据登录。
这就是 Cockpit 的主页了。
关于管理员模式
Cockpit 比较有意思的一点是敏感权限默认情况下是禁用的,执行时需要先开启管理员模式,有一个二次确认的过程,这样可以防止你离开的时候服务器被线下攻击。在不知道密码的情况下,没办法通过面板干任何事情。
就是离开的时候不要忘记返回限制模式……
为 Cockpit 安装插件
Cockpit 一大特色是它的插件功能。可惜的是一键安装只对 Fedora 系的系统支持较好(RPM 源里面都有),Debian 系就很惨了,只支持一键安装两个插件,Networking 和 Storage,也就是可以管理网卡和硬盘,而且默认都已经装上了。
因此这里我们以官方的文件管理器(cockpit-project/cockpit-files)为例,介绍一下手动安装的流程。
其它插件可以在这里找到:Applications — Cockpit Project
安装环境
Cockpit 是使用 Node.js 编写的,因此先安装相关环境。
sudo apt install gettext nodejs npm make下载源码
git clone https://github.com/cockpit-project/cockpit-files.git
cd cockpit-files
make安装插件
sudo make install很经典,这样插件就安装成功了。由于 Cockpit 本身的特性,安装成功后无需重启面板,直接刷新一下后台就有了。
还是要注意一下由于 Ubuntu 仓库里的 Cockpit 更新可能会比较慢,不一定所有的插件都可以支持,像我上一次尝试安装文件管理器的时候就出错了……
至此你应该就学会了 Cockpit 的基本用法,好好享受吧!
常见问题
Ubuntu 下的 Cockpit 无法检查软件更新
主要是因为 Ubuntu Server 默认会同时安装 NetworkManager 和 systemd-networkd,而更新软件所依赖的 PackageKit 偏好 NetworkManager,又因为实际管理网络的是 systemd-networkd,就会导致 PackageKit 认为系统没有联网而拒绝检查更新。
解决方法也很简单,禁用 NetworkManager,然后重启 PackageKit 服务即可。
sudo systemctl disable --now NetworkManager.service
sudo systemctl restart packagekit.serviceIntel Safari、GNOME Web 登录失败
这两个都是使用 WebKit 内核的浏览器,主要是因为 WebKit 对于不信任的证书默认拒绝 WebSocket 连接。解决方法其实 Cockpit 自己都会告诉你,就是自行下载 Cockpit 所使用的证书并且添加信任。
iOS、Apple Silicon Mac 设备登录失败
这些设备相比于上面那俩还要复杂一点,主要是因为这些设备默认不启用 WebSocket,导致 Cockpit 完全无法建立连接,需要在设置里打开相关功能,可以参考官网文章:Use Cockpit with Safari on an iPhone or iPad — Cockpit Project
封面图源:Cockpit Project 官网首页





