Cockpit 运维搭建
Cockpit 是开源的 Linux 服务器图形化管理工具, 专为简化服务器运维工作设计, 适合中小规模环境搭建使用.
一般用于常规
nas或者 10 台服务器管理规模这类日常服务器运维
基本上主流的 Linux 都集成在包管理之中, 直接运行以下命令就可以安装:
# debian 系
sudo apt install cockpit
# redhat 系
sudo yum install cockpit
默认启动的服务端口为
9090
cockpit 并不是 EXSI 和 PVE 这种专门虚拟化管理那种专业化的虚拟化平台, 仅仅是作为界面化运维管理;
同时也不具有底层系统级别的管理能力, 且不具有大规模服务集群的能力.
不过如果只是想单独简单管理几台容器化服务, 利用 cockpit 反而更加轻量而无须对系统整个重新构建.
cockpit-machines只能间接管理KVM虚拟机, 仅支持基本的启停|创建, 没有快照|克隆|高可用方案
如果是小规模(5台)服务器范围且不需要快照备份功能, 只需要对应 cockpit 就足以满足.
系统级别虚拟化带来的问题就是物理资源有限制(有的虚拟化需要最少4G内存等), 并且系统资源占用也不低(cockpit占用不到100M)
cockpit 需要 KVM 虚拟机可以选择 cockpit-machines, 如果需要容器化管理可以选择 cockpit-podman:
# debian 系
sudo apt install cockpit-machines
sudo apt install cockpit-podman
# redhat 系
sudo yum install cockpit-machines
sudo yum install cockpit-podman
安装之后启动服务即可:
sudo systemctl start libvirtd # 启动虚拟化管理
sudo systemctl enable libvirtd # 开机启动虚拟化
sudo systemctl start cockpit # 启动服务器
sudo systemctl enable cockpit.socket # 开机启动
cockpit 是我自己家用单独做服务器运维管理必装的应用, 不需要太多复杂配置就可以进行功能管理, 并且基本上所有发行版都集成
其他虚拟化管理软件在
arm64或者risc-v需要找专门第三方处理, 如果通过cockpit可以直接在烧录镜像部署服务
如果你部署的平台是已经烧录好的开发板, 那么 cockpit 是最好做开发服务的最好选择, 其实主要是应用生态问题导致不得不选择相对通用的方案.
其他配置
默认访问控制, 不允许高权限用户通过网页登陆:
# /etc/cockpit/disallowed-users
# 每一行一个对应用户名即可, 比如 root 推荐绝对不允许提供登陆
sudo vim /etc/cockpit/disallowed-users
如果有 https 证书, 可以手动通过以下地址替换(不同发行版可能文件名称不一样, 但是目录名称基本上不变):
- 私钥:
/etc/cockpit/ws-certs.d/0-self-signed.cert, (权限 600,属主 root) - 证书:
/etc/cockpit/ws-certs.d/0-self-signed.key, (包含完整证书链)
如果是 cloudflare 之类服务端证书就可以直接替换掉暴露给外部访问
如果想修改默认访问端口和地址, 可以通过以下处理:
# 默认的 debian 发行版的系统配置
# 可以通过 sudo systemctl status cockpit.socket 查看到服务文件地址
sudo vim /usr/lib/systemd/system/cockpit.socket
修改具体端口只需要找到以下配置修改即可:
[Socket]
# 屏蔽原来的监听端口号
# ListenStream=9090
ListenStream=19090
之后重启服务来加载更新, 如果有防火墙软件需要加上排除规则:
sudo systemctl daemon-reload
sudo systemctl restart cockpit.socket
这里官方提供了配置 /cockpit.conf 说明:
# 默认配置放置于 /etc/cockpit/cockpit.conf, 如果不存在该文件可以就创建他
sudo mkdir -p /etc/cockpit # 创建目录
sudo touch /etc/cockpit/cockpit.conf # 创建文件
sudo vim /etc/cockpit/cockpit.conf # 编辑文件
文件内容如下:
[WebService]
# 配置访问可接受的域, 这边采用
# - http://127.0.0.1:9090(内网)
# - https://[自己买的域名](外网)
Origins = https://127.0.0.1:9090 https://YourDomain
# 允许非安全 http 访问
AllowUnencrypted=true
之后重启服务即可:
sudo systemctl restart cockpit
这样基本上完成简易的 cockpit 服务优化, 后续就是底层方面优化处理.