Ubuntu 服务器部署 Cockpit Web 管理面板完整指南
还在对着黑乎乎的终端敲命令管理服务器?试试 Cockpit,浏览器里就能完成日常运维,界面中文,操作直观。
Cockpit 是由 Red Hat 主导开发的轻量级服务器管理面板,已被 Ubuntu 官方软件源收录。本文将完整记录从安装到配置的整个流程,包括与 Nginx 反向代理的整合,所有配置均基于真实环境验证,解决实际部署中可能遇到的各种问题。
一、为什么选择 Cockpit?
在众多服务器管理工具中,Cockpit 有这些优势:
- 官方源直接安装:
apt install cockpit即可,无需添加第三方仓库 - 系统账户登录:直接用 Ubuntu 的用户名密码,无需单独维护认证体系
- 功能覆盖日常运维:系统概览、日志查看、服务管理、用户管理、Web 终端、容器管理
- 界面现代,原生中文:适合新手或不想记命令的运维场景
- 资源占用极低:对服务器性能几乎没有影响
- 支持多机管理:可从单台 Cockpit 界面管理多台服务器
二、环境准备
| 项目 | 要求 |
|---|---|
| 操作系统 | Ubuntu 20.04 / 22.04 / 24.04 |
| 内存 | 1GB 以上(推荐 2GB) |
| 网络 | 内网环境,服务器有固定内网 IP |
| 权限 | sudo 权限 |
| 浏览器 | Chrome / Firefox / Edge 等现代浏览器 |
三、安装 Cockpit
3.1 更新软件包索引
sudo apt update
3.2 安装 Cockpit
sudo apt install cockpit -y
安装过程很快,因为 Cockpit 依赖较少。
3.3 启动服务
sudo systemctl start cockpit
特别注意:Cockpit 在 Ubuntu 中不需要执行 systemctl enable,它采用按需启动机制(socket activation),服务会在有网络请求时自动唤醒。
3.4 确认服务运行正常
sudo systemctl status cockpit
正常输出应包含 active (running):
● cockpit.service - Cockpit Web Service
Loaded: loaded (/lib/systemd/system/cockpit.service; static)
Active: active (running) since Sun 2026-07-26 21:49:13 CST; 2h ago
Docs: man:cockpit-ws(8)
Main PID: 101728 (cockpit-tls)
Tasks: 1 (limit: 4539)
Memory: 6.8M
CPU: 1.289s
CGroup: /system.slice/cockpit.service
└─101728 /usr/lib/cockpit/cockpit-tls
此时 Cockpit 运行在 9090 端口,默认使用 HTTPS。
四、验证 Cockpit 直接访问
在浏览器中访问:
https://服务器内网IP:9090
例如:https://192.168.1.103:9090
首次访问时,浏览器会提示证书不安全(Cockpit 使用自签名证书),这是正常现象:
- Chrome/Edge:点击”高级” → “继续访问”
- Firefox:点击”高级” → “接受风险并继续”
输入 Ubuntu 系统的用户名和密码登录。
如果这一步能正常登录,说明 Cockpit 本身完全正常,后续问题都出在 Nginx 代理配置上。
五、安装 Nginx 做反向代理
虽然直接访问 9090 端口也能用,但通过 Nginx 代理可以用标准的 80 端口访问,地址更简洁。
5.1 安装 Nginx
sudo apt install nginx -y
5.2 确认 Nginx 已启动
sudo systemctl status nginx
如果未启动,执行:
sudo systemctl start nginx
5.3 设置 Nginx 开机自启
sudo systemctl enable nginx
六、配置 Nginx 反向代理
6.1 创建配置文件
sudo vi /etc/nginx/sites-available/cockpit
或使用 nano 编辑器:
sudo nano /etc/nginx/sites-available/cockpit
6.2 写入配置内容
server {
listen 80;
server_name _;
client_max_body_size 100M;
location / {
proxy_pass http://127.0.0.1:9090;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
6.3 配置参数详解
| 参数 | 作用 |
|---|---|
listen 80 | 监听标准 HTTP 端口 |
server_name _ | 匹配所有域名/IP 访问 |
client_max_body_size 100M | 允许上传最大 100MB 文件 |
proxy_pass http://127.0.0.1:9090 | 将请求转发到本机的 Cockpit 服务(HTTP 协议) |
proxy_http_version 1.1 | 使用 HTTP 1.1 协议(WebSocket 需要) |
proxy_set_header Upgrade $http_upgrade | 支持 WebSocket 协议升级 |
proxy_set_header Connection "upgrade" | 支持 WebSocket 连接升级 |
重要说明:
- 使用
http://127.0.0.1:9090而非https://,因为 Cockpit 同时支持 HTTP 和 HTTPS - 不需要单独的
/cockpit/socket/location,location /已覆盖所有路径,包括 WebSocket - 不需要
proxy_ssl_verify off,因为用的是 HTTP 协议
6.4 启用配置
创建软链接启用该配置:
sudo ln -s /etc/nginx/sites-available/cockpit /etc/nginx/sites-enabled/
6.5 移除 Nginx 默认页面
Nginx 安装后自带一个默认站点,需要移除,避免冲突:
sudo rm -f /etc/nginx/sites-enabled/default
6.6 测试配置语法
sudo nginx -t
正常输出:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
如果出现警告 conflicting server name "_" on 0.0.0.0:80, ignored,说明 default 配置未完全移除,执行 sudo rm -f /etc/nginx/sites-enabled/default 后重载。
6.7 重载 Nginx 使配置生效
sudo systemctl reload nginx
七、防火墙配置
7.1 检查防火墙状态
sudo ufw status
7.2 放行 80 端口
如果防火墙处于开启状态(Status: active):
sudo ufw allow 80/tcp
7.3 确认放行结果
sudo ufw status | grep 80
应显示:
80/tcp ALLOW Anywhere
7.4 云服务器安全组配置
重要:如果你使用的是云服务器(阿里云、腾讯云、华为云、AWS 等),除了服务器内部防火墙,还需要在云平台控制台配置安全组:
- 登录云平台控制台
- 进入实例详情页 → 安全组
- 添加入方向规则:
- 端口范围:
80 - 协议:
TCP - 授权对象:
0.0.0.0/0(测试用)或你的内网网段(更安全)
这是最常见的遗漏点,导致服务在服务器内部正常,但外部浏览器无法访问。
八、访问 Cockpit
在浏览器中输入:
http://服务器内网IP
例如:http://192.168.1.103
输入 Ubuntu 系统的用户名和密码登录。
登录成功后,你会看到 Cockpit 仪表盘。
九、Cockpit 功能概览
登录后,可以看到以下核心功能模块:
| 模块 | 功能说明 |
|---|---|
| 系统概览 | CPU、内存、磁盘、网络流量的实时图表和历史趋势 |
| 日志 | 按严重级别(错误/警告/信息)筛选和查看系统日志 |
| 存储 | 磁盘分区查看、RAID 状态、挂载点管理 |
| 网络 | 网卡状态、IP 地址、防火墙规则查看与配置 |
| 账户 | 创建/删除系统用户、修改密码、管理 SSH 公钥 |
| 服务 | 启动/停止/重启系统服务,查看服务日志 |
| 软件更新 | 查看可用更新包,支持在线更新 |
| 终端 | 内置 Web 终端,直接在浏览器中执行命令 |
| 容器 | 支持 Podman 容器管理(需安装插件) |
十、可选扩展插件
10.1 Podman 容器管理(官方支持)
sudo apt install podman cockpit-podman -y
安装后刷新 Cockpit 页面,左侧导航栏会出现”Podman Containers”菜单。
10.2 Docker 容器管理(第三方插件)
Cockpit 官方不支持 Docker,需要安装社区开发的第三方插件:
# 添加插件软件源
echo "deb [trusted=yes arch=all] https://chrisjbawden.github.io/cockpit-dockermanager stable main" | sudo tee /etc/apt/sources.list.d/cockpit-dockermanager.list
# 更新并安装
sudo apt update
sudo apt install dockermanager -y
安装后刷新 Cockpit 页面,左侧会出现”Docker Manager”菜单。
10.3 性能监控增强(PCP)
sudo apt install cockpit-pcp -y
安装后会在系统概览页面增加更详细的性能图表。
十一、Cockpit 常用命令速查
| 操作 | 命令 |
|---|---|
| 启动 Cockpit | sudo systemctl start cockpit |
| 停止 Cockpit | sudo systemctl stop cockpit |
| 重启 Cockpit | sudo systemctl restart cockpit |
| 查看服务状态 | sudo systemctl status cockpit |
| 查看最新日志 | sudo journalctl -u cockpit -n 20 |
| 实时跟踪日志 | sudo journalctl -u cockpit -f |
| 查看端口监听 | sudo ss -tulpn | grep 9090 |
十二、常见问题排查
12.1 访问 80 端口显示 “Welcome to nginx”
原因:Nginx 默认站点未移除
解决:
sudo rm -f /etc/nginx/sites-enabled/default
sudo systemctl reload nginx
12.2 Cockpit 登录后显示”连接失败”
原因:Cockpit 服务异常或 WebSocket 转发失败
解决:
# 检查 Cockpit 状态
sudo systemctl status cockpit
# 查看实时日志
sudo journalctl -u cockpit -f
12.3 终端(Web 终端)无法使用
原因:Nginx 配置缺少 WebSocket 支持参数
解决:确认配置中包含:
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
12.4 浏览器访问不了,但服务器本地可以
原因:防火墙或云平台安全组未放行 80 端口
解决:
# 检查 UFW
sudo ufw status
# 放行端口
sudo ufw allow 80/tcp
# 检查云平台安全组(在控制台操作)
12.5 端口 80 被占用
原因:其他服务(如 Apache)占用了 80 端口
解决:
# 查看谁占用了 80 端口
sudo ss -tulpn | grep :80
# 如果是 Apache,停止它
sudo systemctl stop apache2
sudo systemctl disable apache2
十三、Nginx 配置参考
完整的 Nginx 配置文件内容,可直接复制使用:
server {
listen 80;
server_name _;
client_max_body_size 100M;
location / {
proxy_pass http://127.0.0.1:9090;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
配置文件位置:/etc/nginx/sites-available/cockpit
启用后软链接位置:/etc/nginx/sites-enabled/cockpit
十四、总结
部署 Cockpit 的完整流程:
| 步骤 | 操作 | 命令 |
|---|---|---|
| 1 | 安装 Cockpit | sudo apt install cockpit -y |
| 2 | 启动服务 | sudo systemctl start cockpit |
| 3 | 验证直接访问 | 浏览器访问 https://IP:9090 |
| 4 | 安装 Nginx | sudo apt install nginx -y |
| 5 | 配置 Nginx 代理 | 创建 /etc/nginx/sites-available/cockpit |
| 6 | 启用配置 | sudo ln -s ... && sudo rm -f .../default |
| 7 | 重载 Nginx | sudo nginx -t && sudo systemctl reload nginx |
| 8 | 防火墙放行 | sudo ufw allow 80/tcp |
| 9 | 访问 | 浏览器访问 http://IP |
核心要点:
- Cockpit 安装后直接可用,无需修改任何配置文件
- 用
https://IP:9090验证 Cockpit 本身是否正常 - Nginx 用
http://127.0.0.1:9090转发即可,不需要proxy_ssl_verify off - 不需要单独的
/cockpit/socket/location - 放行 80 端口后即可用
http://IP访问
本文所有配置均在 Ubuntu 22.04 内网环境中完成验证。如部署过程中遇到问题,可查看系统日志定位:sudo journalctl -u cockpit -f。