跳至正文
老丹的足迹 —— 代码写给机器,游记写给自己,感悟写给时间
老丹的足迹 老丹的足迹
老丹的足迹 老丹的足迹
  • 首页
  • 示例页面
  • 首页
  • 示例页面
老丹的足迹 老丹的足迹
老丹的足迹 老丹的足迹
  • 首页
  • 示例页面
  • 首页
  • 示例页面

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 等),除了服务器内部防火墙,还需要在云平台控制台配置安全组:

  1. 登录云平台控制台
  2. 进入实例详情页 → 安全组
  3. 添加入方向规则:
  • 端口范围: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 常用命令速查

操作命令
启动 Cockpitsudo systemctl start cockpit
停止 Cockpitsudo systemctl stop cockpit
重启 Cockpitsudo 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安装 Cockpitsudo apt install cockpit -y
2启动服务sudo systemctl start cockpit
3验证直接访问浏览器访问 https://IP:9090
4安装 Nginxsudo apt install nginx -y
5配置 Nginx 代理创建 /etc/nginx/sites-available/cockpit
6启用配置sudo ln -s ... && sudo rm -f .../default
7重载 Nginxsudo nginx -t && sudo systemctl reload nginx
8防火墙放行sudo ufw allow 80/tcp
9访问浏览器访问 http://IP

核心要点:

  1. Cockpit 安装后直接可用,无需修改任何配置文件
  2. 用 https://IP:9090 验证 Cockpit 本身是否正常
  3. Nginx 用 http://127.0.0.1:9090 转发即可,不需要 proxy_ssl_verify off
  4. 不需要单独的 /cockpit/socket/ location
  5. 放行 80 端口后即可用 http://IP 访问

本文所有配置均在 Ubuntu 22.04 内网环境中完成验证。如部署过程中遇到问题,可查看系统日志定位:sudo journalctl -u cockpit -f。

作者

老丹

关注我
其他文章
上一个

Ubuntu 系统 Web 监控方案全攻略:五款开源工具推荐

下一个

Certbot 详解:HTTPS 自动化的基石与完全指南

关于博主

    老丹是一名C/C++后台开发工程师,信奉“无抽象不设计,无性能不生产”。

  • 技术栈:Modern C++、Linux环境编程、多线程/并发、网络编程等。
  • 信条:能用constexpr解决的问题绝不拖到运行时,能靠RAII避免的泄漏绝不写析构。
  • 正在填坑:从解封装到渲染的C++全链路实现,正在驯服FFmpeg与H.264/H.265。
  • 输出原则:这里的每一段代码都经过-Wall -Wextra -Werror -O2的洗礼。

近期文章

  • Linux系统的安全基石:深入理解可插拔认证模块(PAM) 2026年7月27日
  • vsftpd 完全指南:从核心原理到Docker容器化部署 2026年7月27日
  • 互联网的”导航”安全卫士:深入解读DNSSEC 2026年7月27日
  • Ubuntu DNS 配置完全指南 2026年7月27日
  • 在 Ubuntu 中使用 Certbot 的操作指南 2026年7月27日

文章分类

  • C/C++开发 (13)
  • Docker容器 (3)
  • Linux工具包 (10)
  • Linux服务配置 (33)
  • Linux系统 (10)
  • OpenWrt路由 (2)
  • Shell脚本 (3)
  • 安防技术 (4)
  • 数据安全 (30)
  • 网络协议 (17)
  • 计算机理论 (22)
联系我们:📍 地址:中国·广东省深圳市   |   ✉️ 邮箱:support@tanglinux.com   |   💬 QQ:870866607
版权所有:老丹的足迹粤ICP备2026061170号-1       公安备案图标 粤公网安备44030002013274号