zzmzm/tiyi

GitHub: zzmzm/tiyi

Tiyi 是一个将 Caddy、Coraza 和 OWASP CRS 4 打包为单一二进制文件的自主托管 Web 应用防火墙平台,无需外部依赖即可快速部署。

Stars: 1 | Forks: 0

# Tiyi **一个完整且打包为单一二进制文件的 Web 应用防火墙。** Caddy + Coraza + OWASP CRS 4 + SQLite + 管理后台 UI,全部编译进一个可自主托管的 Go 可执行文件。无需 Docker,无需外部数据库,无需 Redis —— 从下载到拦截真实攻击仅需五分钟。

English 中文

One-line install Platform Stack Signed releases

## 安装 ``` curl -fsSL https://www.tiyisec.com/install.sh | bash && sudo tiyi install --now ``` GitHub 镜像(相同脚本):`curl -fsSL https://raw.githubusercontent.com/zzmzm/tiyi/main/install.sh | bash && sudo tiyi install --now`
国内镜像:`curl -fsSL https://gitee.com/tiyisec/tiyi/raw/main/install.sh | TIYI_MIRROR=gitee bash && sudo tiyi install --now` 安装脚本会自动检测您的系统平台(Linux amd64/arm64),下载最新版的 签名发布文件,校验其 SHA-256(必做步骤),并在本地 OpenSSL 支持 `pkeyutl -rawin` 时验证其 Ed25519 发布签名,随后将 `tiyi` 安装至 `/usr/local/bin`。默认情况下,它会优先尝试 GitHub,如果失败则回退到 Gitee 发布镜像;您可以使用 `TIYI_MIRROR=github|gitee`、`TIYI_VERSION`、 `TIYI_PREFIX`、`TIYI_REPO` 或 `TIYI_GITEE_REPO` 来覆盖这些设置。二进制文件 安装完成后,脚本会运行一个带颜色的环境检查,以确认 sudo PATH 以及 80/443/8080 端口的监听情况。如果提示 sudo `secure_path` 警告,请运行打印出的 完整路径命令,或使用 `visudo` 添加 `/usr/local/bin`。如果提示端口 冲突,请停止占用该端口的服务,或者通过 `server.addr`、 `proxy.http_addr` 或 `proxy.https_addr` 修改 Tiyi 的监听地址。 安装程序环境变量: | 变量 | 默认值 | 含义 | |---|---|---| | `TIYI_MIRROR` | `auto` | 下载源:`auto`(GitHub 优先,回退到 Gitee)、`github` 或 `gitee`。 | | `TIYI_REPO` | `zzmzm/tiyi` | 安装程序使用的 GitHub `owner/name`。 | | `TIYI_GITEE_REPO` | `tiyisec/tiyi` | 安装程序使用的 Gitee `owner/name`。 | | `TIYI_VERSION` | 最新稳定版 | 指定发布标签,例如 `v3.1.0`。 | | `TIYI_PREFIX` | `/usr/local/bin` | `tiyi` 二进制文件的安装目录。 | 上面的一行命令不仅会安装二进制文件,还会启动推荐的 systemd 服务。如果您想手动在前台运行,请根据您的权限选择相应的选项: ``` # Root / sudo — 使用默认 state dir (/var/lib/tiyi) 和端口 80/443 sudo tiyi standalone # 普通用户 (无 sudo) — 可写路径和高端口 mkdir -p /tmp/waf tiyi standalone \ --state-db /tmp/waf/state.db \ --caddy-admin-socket /tmp/waf/caddy.sock \ --admin-socket /tmp/waf/admin.sock \ --proxy-http-addr 0.0.0.0:8180 \ --proxy-https-addr 0.0.0.0:18443 ``` Tiyi 在首次启动时会打印一次性的 `admin` 密码。打开控制台,登录 并添加您的第一个站点。完整指南: [`docs/en/getting-started.md`](docs/en/getting-started.md) · [中文](docs/zh/getting-started.md)。 ### 进阶:选择您自己的管理员密码 在首次启动前设置 `TIYI_AUTH_BOOTSTRAP_ADMIN_PASSWORD` 以跳过系统生成的 密码(非常适合自动化、镜像和 CI 环境)—— 可与上面的任意运行 选项结合使用。Tiyi 会直接使用该密码,且不会打印任何横幅提示: ``` mkdir -p /tmp/waf TIYI_AUTH_BOOTSTRAP_ADMIN_PASSWORD='admin123@xxxxxxm' \ tiyi standalone \ --state-db /tmp/waf/state.db \ --caddy-admin-socket /tmp/waf/caddy.sock \ --admin-socket /tmp/waf/admin.sock \ --proxy-http-addr 0.0.0.0:8180 \ --proxy-https-addr 0.0.0.0:18443 ``` 默认用户名为 `admin`。自动生成仅在不存在任何用户时触发,因此后续的重启不会产生任何改变。 ### 通过环境变量进行运行时配置 对于需要持久化的服务配置,推荐使用 `server.yaml`。仅当您的服务管理器、容器运行时或密钥管理器需要在运行时注入配置时,才使用环境变量。环境变量的名称与配置项键名镜像对应:前缀为 `TIYI_`,键名全部大写,并将点替换为下划线。例如,`auth.jwt_secret` 会变为 `TIYI_AUTH_JWT_SECRET`。 常见的配置环境变量覆盖: | 变量 | 配置项键名 | 使用场景 | |---|---|---| | `TIYI_SERVER_ADDR` | `server.addr` | 将 API/控制台绑定到其他地址。 | | `TIYI_STORE_STATE_DB` | `store.state_db` | 迁移 SQLite 状态数据库的位置。 | | `TIYI_LOG_LEVEL` | `log.level` | 临时调高或调低进程日志级别。 | | `TIYI_PROXY_HTTP_ADDR` | `proxy.http_addr` | 更改 HTTP 数据平面监听地址。 | | `TIYI_PROXY_HTTPS_ADDR` | `proxy.https_addr` | 更改 HTTPS 数据平面监听地址。 | | `TIYI_PROXY_CADDY_ADMIN_SOCKET` | `proxy.caddy_admin_socket` | 移动内嵌的 Caddy 管理 socket。 | | `TIYI_CRYPTO_KEK_FILE` | `crypto.kek_file` | 为生产环境固定静态加密 KEK 路径。 | | `TIYI_AUTH_JWT_SECRET` | `auth.jwt_secret` | 为生产环境设置稳定的 JWT 签名密钥。 | | `TIYI_AUTH_BOOTSTRAP_ADMIN_USERNAME` | `auth.bootstrap_admin_username` | 自选首个管理员用户名。 | | `TIYI_AUTH_BOOTSTRAP_ADMIN_PASSWORD` | `auth.bootstrap_admin_password` | 用于自动化场景,自选首个管理员密码。 | | `TIYI_LICENSE_KEY_PATH` | `license.key_path` | 启动时加载签名授权文件。 | | `TIYI_UPDATE_REPO` | `update.repo` | 覆盖更新检查使用的 GitHub 发布仓库。 | | `TIYI_UPDATE_CHANNEL` | `update.channel` | 在执行 `tiyi update` 时选择 `stable` 或 `prerelease` 频道。 | | `TIYI_UPDATE_MIRROR` | `update.mirror` | 在更新检查/下载时使用 `auto`、`github` 或 `gitee`。 | 其他较少使用的配置键也遵循相同规则。除非您的部署平台要求注入环境变量,否则对于 LDAP/RADIUS、token TTL、cookie 设置以及特定于提供商的身份验证设置,建议首选 YAML。 ## 单节点即可免费享受完整功能 单个 Tiyi 节点为您提供**完整的** WAF —— 而非功能受限的免费版本。 以下所有功能均包含在内,并且在本地运行无需任何许可证: - **开箱即用的 OWASP CRS 4** —— 支持针对站点的覆盖规则、偏执级别、异常 评分、排除包以及自定义 SecLang 规则,所有这些都无需克隆修改 规则集。 - **反向代理 + 自动 TLS** —— 底层由 Caddy 驱动,支持 ACME HTTP-01 和 DNS-01 (Cloudflare),泛域名证书以及上传的企业证书。 - **基于路径的路由** —— 通过路径前缀将一个主机分发到多个上游池,每个 池都有各自的健康探测。 - **内置可观测性** —— 包含 Top-K 的遥测管道、基于站点的 URL 树以及 Prometheus exporter —— 无需外部时序数据库。 - **聚焦安全事件,拒绝信息轰炸** —— 将相关联的事件折叠为具有 可追踪生命周期的可操作事件,并支持默认关闭的可选自动 响应。 - **防篡改审计链**、**SIEM 导出** (RFC 5424 / CEF / LEEF)、 包含 Webhook / Slack / PagerDuty / 飞书 / 企业微信的**告警生命周期**、 **RBAC + OIDC**,以及默认关闭、仅作为辅助建议且绝不拦截请求的 **AI Copilot**。 - **统一的 CLI 与 API** —— 相同的 ConnectRPC schema 驱动着 Web UI、 `tiyi` CLI 和 agent 流;`tiyi apply -f site.yaml` 完全是 声明式的。 您可以随时突破单机限制:签名授权可解除远程 agent 的数量限制,从而使二进制文件中已内置的 多节点拓扑(热备 HA、N 个边缘 agent)激活。单节点的体验 永远不会改变。 ## 本仓库包含什么内容 这是 Tiyi 的**分发渠道** —— 包含安装程序、公开的 发布签名密钥以及相关文档。编译并签名的二进制文件会附加在 每个 [GitHub Release](../../releases) 中(它们不会被提交到代码仓库中)。 ## 手动验证下载 每个版本都会附带 `SHA256SUMS`、`SHA256SUMS.sig` 和 `release-manifest.json`。签名公钥作为 [`release-key.pub`](release-key.pub) 在此处发布,并已嵌入 `tiyi` 二进制文件中。 ``` # checksums (必需): sha256sum --check --ignore-missing SHA256SUMS # checksums 的 Ed25519 signature (使用 pkeyutl -rawin 的 OpenSSL): openssl pkeyutl -verify -pubin -inkey release-key.pem -rawin \ -in SHA256SUMS -sigfile <(base64 -d SHA256SUMS.sig) ``` (有关如何从 `release-key.pub` 构建 `release-key.pem` 的内容,请参阅 [`docs/en/getting-started.md`](docs/en/getting-started.md)) ## 更新 正在运行的 Tiyi 可以通过此仓库的发布版本进行自我更新: ``` tiyi update --check # is a newer signed release available? tiyi update --yes # download, verify, and install it tiyi update --yes --mirror gitee ``` `update` 命令在替换磁盘上的二进制文件之前,会针对内嵌的发布 密钥验证完整的 Ed25519 签名链;随后请重启服务。可通过 `--channel prerelease` 跟踪预发布版本的构建。 更新环境变量: | 变量 | 默认值 | 含义 | |---|---|---| | `TIYI_UPDATE_MIRROR` | `auto` | 更新检查/下载源:`auto`、`github` 或 `gitee`。 | | `TIYI_UPDATE_REPO` | `zzmzm/tiyi` | 用于 `github` 和 `auto` 的 GitHub `owner/name`。 | | `TIYI_UPDATE_CHANNEL` | `stable` | `stable` 或 `prerelease`。 | ## 文档 - 英文:[`docs/en/getting-started.md`](docs/en/getting-started.md) - 中文:[`docs/zh/getting-started.md`](docs/zh/getting-started.md) - 官网及完整文档: ## Codex 技能 使用 Codex 的运维人员可以安装 Tiyi 运维技能,以获得关于安装、独立运行、Web UI、CLI、发布、许可证以及故障排除工作流的引导: ``` SKILL_DIR="${CODEX_HOME:-$HOME/.codex}/skills/tiyi-operator" mkdir -p "$SKILL_DIR/agents" curl -fsSL https://raw.githubusercontent.com/zzmzm/tiyi/main/skills/tiyi-operator/SKILL.md \ -o "$SKILL_DIR/SKILL.md" curl -fsSL https://raw.githubusercontent.com/zzmzm/tiyi/main/skills/tiyi-operator/agents/openai.yaml \ -o "$SKILL_DIR/agents/openai.yaml" ``` 已发布的源代码位于 [`skills/tiyi-operator/`](skills/tiyi-operator/)。 ## 法律信息 - 许可证:[EULA.md](EULA.md)。 - 第三方归属声明:[NOTICE](NOTICE)。 - 安全策略与漏洞报告:[SECURITY.md](SECURITY.md)。 “Tiyi”和 Tiyi 标志是 Tiyi 作者的商标。
标签:AppImage, Caddy, Coraza, Go, OWASP CRS, Ruby工具, WAF, Web应用防火墙, 安全防护, 日志审计, 自定义请求头