介绍 Cockpit 安装与 Nginx 子目录反代
作为一名极客,拥有一台自己的 Linux 服务器是非常快乐的事。但对于内存吃紧的VPS(比如只有 1GB 内存的免费 VPS)来说,安装诸如宝塔面板(BT Panel)这样具有侵入性且常驻内存的重型面板,简直是一种灾难。
如果你也嫌弃宝塔吃内存,但又想要一个可视化的中文监控、日志管理和网页终端,那么系统级原生的运维监控框架——Cockpit,是你的最优解。
本文将手把手教你如何安装 Cockpit,并利用 Nginx 的子路径(/os/)安全地进行反向代理访问。
为什么选择 Cockpit?
对于 VPS 的运维,Cockpit 拥有无与伦比的优势:
- 原生系统级:RedHat/CentOS 官方出品,和系统无缝融合。
- 极度轻量:它不是一个常驻进程,而是基于
socket激活机制。只要你不打开浏览器看它,它在后台几乎处于全休眠状态(占用接近 0 内存)。不用就睡觉,非常适合小内存服务器。 - 功能全面:不仅带 CPU/内存/硬盘/网络实时图表,还能直观查看系统日志、管理用户、配置网络。
- 自带中文网页终端:全中文界面,内置网页版终端(勾选密码特权后可使用
sudo),以后运维服务器都不用下载 SSH 工具了。
环境前提:CentOS 8 避坑指南
由于 CentOS 8 已经全面停止维护(EndOfLife),直接运行官方命令通常会因为官方软件仓库下线而报错。
重要前提:请在开始安装前,务必参考之前的文章修复 CentOS 8 的软件源地址为归档源,或者确认你的 dnf 功能是正常的,且没有被宝塔面板这类侵入性面板接管和重写 Nginx 配置文件。
部署指南:15 分钟彻底搞定
第一步:安装与启动 Cockpit
1 | # 1. 安装 Cockpit 主程序 |
第二步:为系统账号设置密码(关键!)
默认系统账号(如 opc 或 root)通过 SSH 密钥登录,通常没有密码。但 Cockpit 的网页强制要求密码验证。我们需要给系统默认账号设置一个密码:
1 | sudo passwd opc |
(输入密码时盲打完按回车,输入两次确认。)
第三步:配置 Cockpit 安全策略(origins/wss)
默认安全策略极其严格。由于我们要把流量导给域名和 Cloudflare 代理,我们必须告诉 Cockpit 我们在用什么协议和域名来访问,否则它会以跨域(Cross-origin request blocked)或白屏拒绝。
直接运行下面整段命令来强制重置配置文件:
1 | sudo tee /etc/cockpit/cockpit.conf > /dev/null <<EOF |
(参数解析:我为您加入了 wss:// 支持,并加上了 AllowUnencrypted = true。因为虽然外部是 HTTPS,但在本地反代到 9090 端口时它是 HTTP 流量。我们必须允许它在本地接收未加密流量。)
写好配置后,务必重启 Cockpit:
1 | sudo systemctl restart cockpit.socket cockpit |
第四步:修改 Nginx 配置文件
我们需要在 Nginx 的配置文件中处理你的域名(server_name your domain;)的 server 块里,新增一个 /os/ 的流量入口。
重点:Cockpit 的实时图表和网页终端的核心依赖是 WebSocket。我们必须在 Nginx 中加入支持,并且强行告诉它我们要 HTTPS 协议。
打开你的 Nginx 配置文件,在业务主路径 location / 下方,新增以下代码:
1 | # ====== 这是新增的 Cockpit 监控配置 ====== |
修改完成后,测试并重启 Nginx:
1 | sudo nginx -t |
🎉 访问与使用
安装完成,您可以开始通过优雅的方式访问您的服务器监控了:
在电脑浏览器里输入:https://yourdomain/os/ (注意最后面一定要把斜杠敲上)。
网页会直接显示全中文的登录界面。
用户名:输入 opc。
密码:输入你在第二步设置的密码。
【登录重点提示】:在登录按钮上方,点击复选框 “我的密码也可用于特权任务 (Reuse my password for privileged tasks)”,务必勾选它! 这样你在网页自带终端里使用它时,就拥有了最高管理员 sudo 权限了。
登录进去后,您就会发现 CPU/内存图表、日志管理、甚至是网页版 SSH 终端都已经全部到位。这种零负担的运维面板,才是小内存 VPS 的绝配!