XCC 部署全攻略:从零搭建分布式开源 CC 防护系统
XCC(StarDust CC Defense) 是一个开源、分布式、支持 CDN 思路的 CC / DDoS 防御系统,主要面向中小站点,在不依赖昂贵云防护的情况下,实现“多节点 + 行为校验 + 反向代理”的防护模式。
项目地址:
https://github.com/defeatedperson/xcc
本文将从 架构理解 → 环境准备 → 三种部署方式(重点 Docker)→ 常见坑位,完整讲清楚 XCC 如何部署和上线。

一、XCC 整体架构说明(先搞清楚再部署)
在部署之前,一定要理解 XCC 的组件划分,否则容易把「主控」「节点」混在一起。
XCC 的核心模块
XCC 并不是一个“单程序”,而是由多个模块协作完成:
| 模块 | 技术栈 | 作用 |
|---|---|---|
| 主控(控制台) | PHP + SQLite + JSON | 域名管理、节点管理、策略配置 |
| 节点控制 | Go | 接收主控指令 |
| 节点代理 | OpenResty(Nginx + Lua) | 实际拦截 CC / 反代流量 |
| 安全逻辑 | Lua | 行为分析、人机验证 |
关键点:
-
主控 ≠ 节点
-
一个主控可以管理多个节点
-
节点必须占用
80 / 443 / 8080等端口
二、部署前的环境要求
主控端(管理面板)
-
PHP 8.0 及以上
-
支持
exec函数 宝塔用户需要解除exec禁用 -
SQLite 可用
-
Web 环境即可(Nginx / Apache 均可)
节点端(防护服务器)
-
推荐 Debian 11 / 12
-
最低配置:
-
1 核 CPU
-
1 GB 内存(512 MB 也能跑,需调小连接数)
-
-
需要独占端口:
-
80 -
443 -
8080
-
三、部署方式总览
XCC 官方提供了 三种部署方式:
-
手动部署(传统 PHP 方式)
-
Docker 部署(推荐)
-
云厂商一键部署
下面重点讲 Docker 部署,这是目前最稳定、最省事的方式。
四、Docker 部署 XCC(推荐方案)
创建宿主机目录
sudo mkdir -p /opt/xcc-appsudo touch /opt/xcc-app/site.jsonsite.json 用于节点配置,必须存在。
拉取官方镜像
docker pull defeatedperson/xcc-app:latest这是官方维护的 XCC 主控 Docker 镜像。
启动容器
docker run -d \ -p 8080:80 \ --name xcc-app-instance \ --restart always \ -v xcc_auth_data:/var/www/html/auth/data \ -v xcc_api_db:/var/www/html/api/db \ -v xcc_data_db:/var/www/html/data/db \ -v /opt/xcc-app/site.json:/var/www/html/node/site.json \ defeatedperson/xcc-app:latest参数说明(非常重要)
| 参数 | 说明 |
|---|---|
-p 8080:80 | 容器 Web 面板暴露在 8080 |
--restart always | 服务器重启自动拉起 |
xcc_auth_data | 登录 / 鉴权数据 |
xcc_api_db | API 数据库 |
xcc_data_db | 核心业务数据 |
site.json | 节点配置文件 |
配置反向代理(HTTPS)
强烈建议:8080 面板只通过 HTTPS 访问
你需要在宿主机:
-
建一个 Nginx 反向代理
-
指向
127.0.0.1:8080 -
开启 HTTPS(Let’s Encrypt 即可)
官方已内置伪静态规则
无需额外配置 rewrite
五、手动部署方式(不推荐但可用)
适合想“像装 WordPress 一样装 XCC”的用户。
步骤简述
-
下载 Release 包
-
解压到 Web 目录
-
配置 Nginx / Apache
-
按页面提示完成初始化
缺点:
-
环境依赖多
-
不如 Docker 稳定
-
升级麻烦
六、部署完成后的关键配置
初始化主控
访问:
https://你的域名完成:
-
管理员账号设置
-
初始节点配置
添加节点
在主控面板中:
-
添加节点 IP
-
下发配置
-
节点拉起 OpenResty
节点状态正常后,才会开始拦截流量。
域名接入流程
正确顺序是:
用户请求 → XCC 节点 → 原站服务器所以你需要:
-
将域名 DNS 指向 XCC 节点 IP
-
原站只允许来自节点的访问(防绕过)
七、常见坑位与建议
1. exec 被禁用
表现:
-
节点无法下发
-
面板报错
解决:
- PHP 配置中解除
exec
2. 节点内存不够
表现:
-
OpenResty 启动失败
-
频繁 502
解决:
-
调小
nginx.conf中连接数 -
或升级内存
安全建议
-
面板 IP 白名单
-
节点与原站隔离
-
配合防火墙限制直连
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!