Files
CLICD/README.md
T
MengMengCode e306d2d06b first commit
2026-06-05 19:23:28 +08:00

4.8 KiB
Raw Blame History

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 后在目标服务器上执行:

tar -xzf clicd-linux-amd64.tar.gz
cd clicd-linux-amd64
sudo ./install.sh

安装完成后访问:

http://YOUR_SERVER_IP:8999

首次启动时会自动初始化管理员账号:

Username: admin
Password: 随机 16 位密码

安装脚本会尝试从 systemd 日志中输出初始账号密码。如果机器上已经存在 /root/.clicd/config.json,则不会重新生成密码。

查看初始密码日志:

journalctl -u clicd --no-pager -n 80 | grep -E "Username:|Password:"

GitHub Actions 构建

仓库内置 .github/workflows/build.yml

  • 推送到 mainmaster 时自动构建 Linux amd64 产物。
  • 创建 v* 标签时自动发布 GitHub Release。
  • 支持手动 workflow_dispatch 构建。

发布版本示例:

git tag v1.0.0
git push origin v1.0.0

Release 会包含:

clicd-linux-amd64.tar.gz
clicd-linux-amd64
SHA256SUMS

CLI 模式

进入 CLI

clicd cli

仅使用 CLI,不自动拉起 Web 服务:

systemctl stop clicd
systemctl disable clicd
clicd cli --no-web

重新启用 Web 控制台:

systemctl enable --now clicd

常用服务命令

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,其中包含敏感信息,不要提交到公开仓库。