Bối cảnh & Tại sao nên dùng
Xử lý sự cố trên các máy chủ Linux không giao diện (headless) qua SSH vốn là công việc quen thuộc của hầu hết các sysadmin. Tuy nhiên, khi một cảnh báo on-call đánh thức bạn lúc 2 giờ sáng, việc phải mở hàng loạt tab terminal để truy tìm điểm nghẽn cổ chai sẽ làm tiêu tốn rất nhiều thời gian quý báu. Chạy tuần tự các lệnh top, iostat -xz 1, journalctl -xe và ip link vẫn giải quyết được vấn đề, nhưng tốc độ xử lý sẽ bị chậm lại đáng kể. Nếu đội ngũ của bạn có cả các lập trình viên hoặc kỹ sư mới chưa quen thao tác hoàn toàn trên bash, một web console mượt mà và trực quan sẽ giúp đẩy nhanh tốc độ khắc phục sự cố rõ rệt.
Cockpit được tạo ra để giải quyết chính xác bài toán này. Được dẫn dắt bởi Red Hat và hỗ trợ trên hầu hết các bản phân phối phổ biến, Cockpit mang đến một bảng điều khiển quản trị dạng module trên trình duyệt, giao tiếp trực tiếp với các API chuẩn của Linux. Nó hoàn toàn khác biệt so với các bảng điều khiển truyền thống như Webmin hay cPanel.
Những công cụ cũ đó thường chạy các tiến trình daemon nặng nề chạy ngầm liên tục và ghi đè các file cấu hình của bạn bằng định dạng riêng. Ngược lại, Cockpit không hề chạm vào các file cấu hình hiện có. Thay vào đó, nó tận dụng socket của systemd, cơ chế xác thực PAM, NetworkManager và UDisks2. Khi không có phiên trình duyệt nào kết nối, dịch vụ sẽ ở trạng thái chờ (idle), gần như tiêu tốn 0 MB RAM và hoàn toàn không chiếm chu kỳ CPU nào.
Qua hơn ba năm quản trị một cụm 14 máy chủ VPS Ubuntu và Rocky Linux trong môi trường production, tôi luôn nhìn nhận các giao diện quản trị mở qua web với sự thận trọng nhất định. Mở quyền root ra môi trường HTTP luôn tiềm ẩn rủi ro nếu không cẩn thận. Cockpit tránh được các bẫy thường gặp của các control panel khác nhờ tuân thủ trực tiếp các cơ chế bảo mật gốc của Linux, giữ nguyên các quy tắc sudo hiện có, chính sách SELinux và quyền hạn SSH key mà không cần lớp middleware tùy biến nào.
Cài đặt
Cockpit đã có sẵn trong kho phần mềm mặc định của hầu hết các bản phân phối hiện đại. Thay vì cài một gói nhị phân nguyên khối cồng kềnh, dự án chia nhỏ các tính năng thành các plugin module nhẹ phục vụ lưu trữ, mạng và bảo trì gói phần mềm.
Hệ thống Ubuntu / Debian
Trên Ubuntu 22.04/24.04 LTS và Debian 12, bạn có thể cài đặt web console cốt lõi cùng các module quản trị chuẩn thông qua apt:
sudo apt update
sudo apt install -y cockpit cockpit-storaged cockpit-networkmanager cockpit-packagekit
RHEL, AlmaLinux, Rocky Linux và Fedora
Các bản phân phối Enterprise Linux 8 và 9 đều tích hợp sẵn Cockpit trong kho phần mềm cơ sở:
sudo dnf install -y cockpit cockpit-storaged cockpit-networkmanager cockpit-packagekit
Nếu bạn đang chạy các hypervisor KVM, hãy cài thêm gói cockpit-machines để quản lý máy ảo và gán card mạng ảo (vNIC) trực tiếp từ giao diện web.
Cấu hình
Sau khi cài đặt xong các gói cần thiết, tiến hành kích hoạt socket và mở port tương ứng trên firewall.
1. Kích hoạt Socket Activation của Systemd
Cockpit tránh việc phải chạy một web daemon nền liên tục bằng cách sử dụng cơ chế kích hoạt socket theo yêu cầu (on-demand socket activation) của systemd. Tiến trình cockpit-ws chỉ khởi chạy khi có lưu lượng truy cập gửi đến port. Hãy bật và khởi động socket ngay bây giờ:
sudo systemctl enable --now cockpit.socket
Kiểm tra xem systemd đã lắng nghe trên port TCP 9090 hay chưa:
sudo systemctl status cockpit.socket
ss -tulpn | grep 9090
Bạn sẽ thấy systemd liên kết với *:9090 hoặc :::9090 ở trạng thái lắng nghe (LISTEN) đang hoạt động.
2. Thiết lập quy tắc Firewall
Mặc định Cockpit tiếp nhận lưu lượng truy cập trên port 9090. Hãy mở port này trên firewall của máy chủ trước khi kết nối.
Trên các hệ thống sử dụng UFW (Ubuntu/Debian):
sudo ufw allow 9090/tcp comment 'Giao diện web Cockpit'
sudo ufw reload
Trên các hệ thống sử dụng firewalld (RHEL, Rocky, AlmaLinux):
sudo firewall-cmd --add-service=cockpit --permanent
sudo firewall-cmd --reload
3. Gia cố bảo mật và tùy biến cấu hình
Cockpit đọc các thiết lập ghi đè từ file /etc/cockpit/cockpit.conf. Trình cài đặt sẽ không tự động tạo file này. Bạn hãy tạo thủ công để áp dụng thời gian chờ hết hạn phiên (idle timeout) ngắn hơn, giới hạn số lần đăng nhập đồng thời và từ chối các kết nối không mã hóa:
sudo mkdir -p /etc/cockpit
sudo tee /etc/cockpit/cockpit.conf <<'EOF'
[WebService]
MaxStartups = 5
IdleTimeout = 15
AllowUnencrypted = false
[Session]
Banner = /etc/issue.net
EOF
Áp dụng các quy tắc cập nhật bằng cách khởi động lại socket:
sudo systemctl restart cockpit.socket
Kiểm tra & Giám sát
Mở trình duyệt và truy cập https://<your-server-ip>:9090. Cockpit tự sinh một chứng chỉ TLS tự ký (self-signed) trong thư mục /etc/cockpit/ws-certs.d/ ở lần khởi chạy đầu tiên. Trình duyệt của bạn sẽ hiển thị cảnh báo HTTPS không đáng tin cậy. Bạn có thể bỏ qua cảnh báo này khi thử nghiệm trong mạng nội bộ. Đối với môi trường công khai ra ngoài Internet, hãy đặt một cặp chứng chỉ Let’s Encrypt hợp lệ vào thư mục đó.
1. Xác thực và nâng quyền quản trị
Đăng nhập bằng bất kỳ tài khoản hệ thống thông thường nào. Cockpit xác thực qua PAM. Người dùng thông thường sẽ ở trong phiên làm việc không có đặc quyền và chỉ đọc (read-only). Để thực hiện các tác vụ như dừng dịch vụ hoặc mount ổ đĩa, hãy nhấp vào Turn on administrative access (Bật quyền quản trị) ở thanh tiêu đề trên cùng và xác thực bằng mật khẩu sudo của bạn.
2. Tổng quan tài nguyên hệ thống
Màn hình Overview (Tổng quan) cung cấp các biểu đồ mượt mà cập nhật mỗi giây một lần mà không cần tải lại trang:
- Mức sử dụng CPU: Trực quan hóa các đợt tăng đột biến theo từng core, cho biết sự cố bắt nguồn từ độ trễ chờ hệ thống (system wait) hay do các tác vụ tính toán ở không gian người dùng (user-space).
- Dung lượng bộ nhớ: Phân chia rõ ràng mức RAM đang dùng thực tế, dung lượng đệm/cache của hệ điều hành và dung lượng swap thành các thanh màu trực quan.
- Băng thông ổ cứng: Vẽ biểu đồ IOPS đọc/ghi đồng thời và dung lượng MB/s song song với mức tải trung bình (load average) của hệ thống.
- Lưu lượng mạng: Theo dõi lưu lượng truy cập chiều vào (inbound) và chiều ra (outbound) theo thời gian thực trên từng giao diện mạng vật lý.
3. Quản lý phân hệ lưu trữ
Không cần gõ lặp đi lặp lại các lệnh lsblk và fdisk -l nhờ chuyển sang tab Storage. Bạn có thể kiểm tra nhanh các thiết bị lưu trữ NVMe, SATA và block storage trong nháy mắt:
- Tạo volume group LVM, phân bổ thin pool và mở rộng logical volume chỉ với hai cú nhấp chuột.
- Định dạng phân vùng bằng EXT4 hoặc XFS và cấu hình điểm mount cố định trực tiếp vào
/etc/fstab. - Xem các chỉ số sức khỏe S.M.A.R.T. của ổ đĩa, bao gồm số lượng sector được cấp phát lại (reallocated sector count) và nhiệt độ hoạt động để kịp thời phát hiện nguy cơ hư hỏng phần cứng.
- Giám sát các mảng RAID phần mềm và theo dõi tiến độ đồng bộ tái tạo dữ liệu (rebuild sync) theo thời gian thực.
4. Mạng và quản lý người dùng
Chuyển đến màn hình Networking để xem các địa chỉ IP, subnet mask, DNS nameserver và gateway route. Bạn có thể gộp giao diện mạng thành LACP bond, thiết lập 802.1Q VLAN và kiểm tra bộ đếm gói tin bị rớt (dropped packet) trên từng port mà không cần chỉnh sửa các script cấu hình của NetworkManager.
Trong mục Accounts, bạn có thể tạo người dùng mới, khóa tài khoản bị xâm nhập, phân quyền wheel/sudo và dán trực tiếp SSH public key vào hồ sơ người dùng mà không cần chỉnh sửa thủ công file ~/.ssh/authorized_keys.
5. Dịch vụ, Log và Terminal dự phòng
Bảng điều khiển Services phân loại các target, timer và service của systemd, hỗ trợ khởi động lại dịch vụ chỉ với một cú nhấp chuột và xem log trực tiếp của các unit đang ở trạng thái failed. Khi các nút bấm trên giao diện chưa đáp ứng đủ nhu cầu, hãy nhấp vào tab Terminal. Cockpit cung cấp ngay một terminal tương tác hỗ trợ quyền root ngay trong trình duyệt, tương thích hoàn toàn với tmux, htop và hiển thị 256 màu. Bạn vừa tận hưởng được sự tiện lợi của giao diện đồ họa GUI, vừa giữ nguyên được toàn bộ sức mạnh thực tế của dòng lệnh.

