CLICD

CLICD

Go React TypeScript Vite Tailwind CSS LXC

CLICD 是一个面向 LXC 的轻量容器管理面板,提供 Web 控制台、CLI、批量任务、镜像管理、NAT 端口、IPv6 分配、WebSSH、资源限制、流量限制和安全告警能力。它适合用来管理小型 VPS 上的 LXC 容器,也适合需要批量创建和分发子用户管理链接的场景。 ## 功能介绍 1. 支持 Ubuntu、Debian、Alpine、CentOS、Arch Linux、Fedora、Rocky Linux 等系统镜像。镜像可以在镜像管理中按需下载;如果宿主机资源比较小,建议优先选择 Alpine 这类轻量镜像。 2. 支持 WebSSH 管理,可以在浏览器里一键进入容器终端,不需要手动复制 SSH 密码。 3. 支持子用户管理链接,管理员可以把指定容器分发给拼车用户,子用户只能管理自己被授权的容器。 4. 支持设置 NAT4 端口数量、NAT 端口映射和协议限制,并支持分配公网 IPv6。IPv6 分配要求宿主机本身拥有可路由的 IPv6 地址段。 5. 支持超售容量估算。宿主机控制页提供 KSM 合并、Swap 倾向和 cgroup v2 `memory.reclaim` 一次性回收能力;不会展示 LXC 下无实际通用效果的内存气球回收开关。 6. 支持 API 接入,可以通过 API 完成容器、任务、镜像、端口、流量、安全告警等功能的自动化控制。 7. 支持仅使用 CLI 管理。需要关闭 Web 控制台时,可以停止并禁用 systemd 服务,然后使用 `clicd cli --no-web` 进入命令行模式。 8. 支持设置容器有效期。到期后容器会自动关机,子用户无法继续操作,只有管理员重新设置延期日期后才能恢复使用。 9. 支持单向和双向网络流量限制。达到限制后容器会自动关机,避免流量超额。 10. 内置基于 conntrack 的轻量安全告警。系统不会保存完整正常连接日志,但会对端口扫描、横向扫描、爆破倾向、SMTP 滥用、UDP 反射、挖矿端口、代理/VPN/Tor 等可疑行为生成告警并写入审计日志。 ## 技术栈 - Backend: Go, net/http, LXC, cgroup v2, iptables, conntrack - Frontend: React, TypeScript, Vite, Tailwind CSS, lucide-react, xterm.js - Runtime: Linux, systemd, LXC - Build: GitHub Actions, Node.js 20, Go 1.22 ## 安装 推荐使用 GitHub Actions 构建出的 Release 产物。下载 `clicd-linux-amd64.tar.gz` 后在目标服务器上执行: ```bash tar -xzf clicd-linux-amd64.tar.gz cd clicd-linux-amd64 sudo ./install.sh ``` 安装完成后访问: ```text http://YOUR_SERVER_IP:8999 ``` 首次启动时会自动初始化管理员账号: ```text Username: admin Password: 随机 16 位密码 ``` 安装脚本会尝试从 systemd 日志中输出初始账号密码。如果机器上已经存在 `/root/.clicd/config.json`,则不会重新生成密码。 查看初始密码日志: ```bash journalctl -u clicd --no-pager -n 80 | grep -E "Username:|Password:" ``` ## GitHub Actions 构建 仓库内置 `.github/workflows/build.yml`: - 推送到 `main` 或 `master` 时自动构建 Linux amd64 产物。 - 创建 `v*` 标签时自动发布 GitHub Release。 - 支持手动 `workflow_dispatch` 构建。 发布版本示例: ```bash git tag v1.0.0 git push origin v1.0.0 ``` Release 会包含: ```text clicd-linux-amd64.tar.gz clicd-linux-amd64 SHA256SUMS ``` ## CLI 模式 进入 CLI: ```bash clicd cli ``` 仅使用 CLI,不自动拉起 Web 服务: ```bash systemctl stop clicd systemctl disable clicd clicd cli --no-web ``` 重新启用 Web 控制台: ```bash systemctl enable --now clicd ``` ## 常用服务命令 ```bash systemctl status clicd systemctl restart clicd journalctl -u clicd -f ``` ## 注意事项 - 需要 root 权限安装和运行。 - 宿主机需要支持 LXC。 - NAT 和端口映射依赖 iptables。 - 安全告警依赖 conntrack 或 `/proc/net/nf_conntrack`。 - IPv6 分配要求宿主机拥有可用公网 IPv6 地址段。 - 配置文件位于 `/root/.clicd/config.json`,其中包含敏感信息,不要提交到公开仓库。