Hướng dẫn cài đặt xyOps: Nền tảng tự động hóa workflow và giám sát máy chủ cho môi trường self-hosted
Tóm tắt nhanh:
xyOps là một nền tảng tự động hóa workflow, giám sát máy chủ, cảnh báo và phản ứng sự cố được hợp nhất trong cùng một hệ thống self-hosted. Điểm mạnh của công cụ nằm ở việc kết nối job scheduling, workflow editor dạng trực quan, monitor theo thời gian thực, alert có ngữ cảnh, snapshot máy chủ và khả năng mở rộng qua plugin marketplace. Nếu bạn đang vận hành hạ tầng riêng, muốn thay thế một chồng công cụ rời rạc bằng một giải pháp thống nhất hơn, xyOps là dự án mã nguồn mở rất đáng thử, đặc biệt với mô hình triển khai Docker và kiến trúc conductor plus worker khá rõ ràng.
xyOps được PixlCore mô tả là một hệ thống “all-in-one” cho job scheduling, workflow automation, server monitoring, alerting và incident response. Điều làm công cụ này nổi bật không chỉ là số lượng tính năng, mà là cách các tính năng đó liên kết chặt với nhau. Khi một cảnh báo xuất hiện, bạn có thể nhìn thấy job đang chạy trên máy bị ảnh hưởng, mở snapshot để xem process, CPU, network connection và tiếp tục điều tra ngay trong cùng một giao diện. Với các nhóm DevOps hoặc self-hosting, đây là hướng tiếp cận khác biệt so với việc ghép cron, workflow engine, monitoring stack và ticketing thành nhiều lớp rời nhau.
So với nhiều giải pháp chuyên một mảng, xyOps hướng tới một vòng phản hồi thống nhất từ lập lịch tác vụ đến giám sát vận hành. Nó có workflow editor trực quan, monitor time-series, alert có expression, snapshot máy chủ, job actions, limit controls, cluster conductor nhiều nút, hỗ trợ air-gapped mode và plugin marketplace. Ngoài ra, dự án sử dụng giấy phép BSD-3-Clause, công khai trên GitHub và nhấn mạnh định hướng không khóa tính năng sau paywall ở bản self-hosted.

Kiến trúc vận hành của xyOps
Ở lớp kiến trúc, xyOps phân thành conductor và server worker. Conductor là nơi chạy đầy đủ stack gồm web UI, scheduler, routing, storage và API; còn server worker chạy xySat, giữ kết nối WebSocket liên tục với conductor, thu thập metric và thực thi job. Kiến trúc này hợp với cả homelab lẫn hạ tầng lớn hơn vì worker có thể chạy trên Linux, macOS hoặc Windows, còn conductor có thể mở rộng sang mô hình multi-conductor với cơ chế failover.
Điểm đáng chú ý là giám sát trong xyOps không chỉ dựa trên monitor mỗi phút. Hệ thống còn có QuickMon, một lớp monitor nhẹ lấy mẫu mỗi giây để hiển thị đồ thị CPU, memory, disk và network trong 60 giây gần nhất. Trong khi đó, monitor chuẩn được tính mỗi phút, lưu vào time-series database ở nhiều độ phân giải và có thể dùng làm đầu vào cho alert. Điều này giúp xyOps vừa có khả năng nhìn “real-time now”, vừa có chiều sâu lịch sử để phân tích xu hướng.
Hướng dẫn cài đặt xyOps bằng Docker
Bước 1: Chuẩn bị hostname và thư mục cấu hình
Theo tài liệu self-hosting, điều kiện rất quan trọng là container hoặc máy chạy xyOps phải có hostname có thể phân giải và truy cập được trong mạng của bạn. Đây là điều kiện để các worker xySat kết nối đúng tới conductor. Nếu hostname không thể resolve trong LAN, nhiều tính năng của hệ thống sẽ không hoạt động ổn định. Bạn cũng nên chuẩn bị sẵn một thư mục trên host để bind mount vào /opt/xyops/conf, vì toàn bộ cấu hình thực tế và các override từ UI sẽ nằm tại đây.
Bước 2: Chạy conductor đầu tiên bằng Docker
Cách khởi động nhanh nhất là dùng image chính thức từ GitHub Container Registry. Mẫu sau là cấu hình cơ bản cho một conductor đơn, có bật luôn xySat local để bạn thử job và monitor ngay trên cùng container.
docker run \
--detach \
--init \
--name "xyops-conductor-1" \
--hostname "xyops01.internal.example.com" \
-e XYOPS_masters="xyops01.internal.example.com" \
-e XYOPS_xysat_local="true" \
-e TZ="Asia/Ho_Chi_Minh" \
-v xy-data:/opt/xyops/data \
-v /srv/xyops/conf:/opt/xyops/conf \
-v /var/run/docker.sock:/var/run/docker.sock \
--restart unless-stopped \
-p 5522:5522 \
-p 5523:5523 \
ghcr.io/pixlcore/xyops:latest
Sau khi container chạy, bạn truy cập http://localhost:5522 hoặc https://localhost:5523. Tài liệu cho biết hệ thống sẽ tạo sẵn tài khoản quản trị mặc định với username admin và password admin. Trong môi trường thật, bạn nên đăng nhập ngay và đổi thông tin này, đồng thời đặt base_app_url, secret_key, mail settings và cấu hình TLS nghiêm túc trước khi đưa vào vận hành.
Bước 3: Dùng Docker Compose cho self-hosted ổn định hơn
Nếu muốn dễ bảo trì hơn, bạn có thể chuyển sang Compose. Đây là cấu hình tối thiểu bám sát tài liệu chính thức.
services:
xyops01:
image: ghcr.io/pixlcore/xyops:latest
container_name: xyops-conductor-01
hostname: xyops01.internal.example.com
init: true
restart: unless-stopped
environment:
XYOPS_xysat_local: "true"
XYOPS_masters: "xyops01.internal.example.com"
TZ: Asia/Ho_Chi_Minh
volumes:
- xy-data:/opt/xyops/data
- /srv/xyops/conf:/opt/xyops/conf
- /var/run/docker.sock:/var/run/docker.sock
ports:
- "5522:5522"
- "5523:5523"
volumes:
xy-data:Điểm đáng lưu ý là mount docker.sock chỉ thực sự cần nếu bạn muốn xyOps tự chạy container cho Docker Plugin hoặc dùng Plugin Marketplace thuận tiện hơn. Với môi trường bảo mật chặt, bạn có thể bỏ bind mount này và chỉ bật lại khi cần.
Hướng dẫn sử dụng tính năng workflow automation trong xyOps
Cách workflow hoạt động
Workflow trong xyOps là một đồ thị trực quan gồm trigger node, event node, job node, action node, limit node và các controller như Split, Join, Repeat, Multiplex, Decision, Wait. Khi trigger kích hoạt, các node nối từ đó sẽ chạy song song theo mặc định; sub-job được sinh ra, kết quả của chúng quyết định wire nào tiếp tục được kích hoạt. Đây là một mô hình orchestration rất hợp cho các tình huống fan-out xử lý song song, nhiều target server, loop, join dữ liệu và điều phối hậu xử lý.
Điểm hay là bạn có thể dùng event node để tái sử dụng cấu hình job có sẵn, hoặc job node để viết tác vụ ad-hoc ngay trong workflow editor. Khi cần kiểm soát tài nguyên, bạn gắn limit node như Max Concurrent Jobs hoặc Max Queue Size vào event hoặc job. Khi cần hành động theo điều kiện, bạn gắn action node để gửi email, gọi webhook, tạo snapshot hoặc thực hiện hành động hậu xử lý khác.
Một workflow thực tế nên bắt đầu như thế nào
Một mẫu rất thực dụng cho self-hosting là workflow bảo trì theo lịch: trigger theo schedule, chạy job cập nhật package trên nhóm server, dùng Multiplex để tách theo từng máy, đặt giới hạn concurrent để tránh dồn tải, rồi nối sang Join hoặc continue để tổng hợp kết quả và gửi cảnh báo nếu có node thất bại. Với xyOps, cấu trúc kiểu này không cần ghép nhiều công cụ ngoài vì workflow, limit, action và job context đều nằm chung trong một engine.
Hướng dẫn giám sát máy chủ và cảnh báo trong xyOps
Thiết lập monitor
Monitor trong xyOps theo dõi một giá trị số duy nhất trên mỗi server theo chu kỳ một phút. Bạn định nghĩa expression để trích dữ liệu từ ServerMonitorData, chọn kiểu dữ liệu như integer, float, bytes hay seconds, rồi xyOps lưu mẫu vào time-series để vẽ biểu đồ theo giờ, ngày, tháng, năm. Các monitor mặc định gồm load average, CPU usage, memory used, disk usage, network in/out, process count và active jobs, đủ để dựng bộ quan sát cơ bản cho một cụm self-hosted.
Ngoài monitor chuẩn, QuickMon bổ sung lớp hiển thị cực ngắn hạn cho CPU, memory, disk và network theo từng giây. Tại trang server, bạn còn xem được process list, network connections, running jobs, upcoming jobs, alert hiện hành và tạo snapshot thủ công. Với góc nhìn vận hành, đây là một lợi thế vì thông tin điều tra sự cố được gom vào cùng một màn hình, thay vì phải chuyển qua dashboard khác.
Thiết lập alert và snapshot
Alert trong xyOps được đánh giá mỗi phút dựa trên monitor và dữ liệu live của server. Bạn có thể dùng expression như monitors.load_avg >= (cpu.cores + 1) hoặc memory.available < (memory.total * 0.05), thêm warm-up bằng số mẫu liên tiếp, và gắn hành động khi alert mới xuất hiện hoặc khi được clear. Hệ thống hỗ trợ email, channel, run job, create ticket, webhook, plugin và snapshot. Mặc định, alert mới còn có thể gắn snapshot để lưu lại trạng thái máy tại thời điểm xảy ra sự cố.
Một tính năng rất đáng giá cho đội vận hành là alert có thể chặn job mới trên server đang bất ổn, hoặc thậm chí abort toàn bộ job đang chạy nếu điều kiện nghiêm trọng xảy ra. Điều này biến xyOps thành một nền tảng phản ứng sự cố chứ không chỉ là hệ thống gửi thông báo.
Khả năng mở rộng và tiềm năng tương lai của xyOps
Nếu nhìn vào roadmap công khai trong tài liệu và cấu trúc hiện tại, tiềm năng lớn của xyOps nằm ở ba hướng. Thứ nhất là mở rộng qua Plugin Marketplace, nơi plugin có thể được đóng gói bằng npx, uvx, go run hoặc docker run, giúp hệ thống thích nghi với những use case tự động hóa rất đặc thù. Thứ hai là khả năng multi-conductor, external storage và air-gapped mode, khiến công cụ đủ nghiêm túc cho production hoặc môi trường nhạy cảm. Thứ ba là mô hình conductor cộng xysat worker rất hợp cho hạ tầng phân tán, autoscaling worker và homelab nâng cấp dần theo nhu cầu.
Nếu bạn muốn một điểm bắt đầu rõ ràng, hãy triển khai một conductor Docker, thêm vài worker qua giao diện “Add Server”, bật một số monitor mặc định, tạo alert CPU hoặc disk, rồi xây workflow đầu tiên cho backup hoặc bảo trì. Chỉ riêng bài test nhỏ đó cũng đủ để thấy triết lý của xyOps: thay vì quản trị hạ tầng bằng nhiều mảnh rời, bạn có một lớp điều phối thống nhất hơn, dễ quan sát hơn và hợp với tinh thần open-source self-hosted. Để đi sâu hơn, bạn có thể bắt đầu từ repo chính thức trên GitHub hoặc đọc tiếp tài liệu self-hosting của dự án.












