开始使用

安装

太一以签名 Linux 二进制形式分发。从公开发行渠道安装,写一份小 YAML 配置,然后运行完整 Controller 或入网一个远程 Agent。

用 v3.5.3 替换 v3.4.0 或更早版本时,必须执行破坏性完整卸载。停止旧服务,完成并验证完整备份,运行 sudo tiyi uninstall --purge,再安装全新的 v3.5.3 服务并重新注册全部 Agent。不要把旧数据库恢复进 v3.5;安装前先阅读专用升级指引

安装签名二进制

太一是单一签名二进制 —— 在单节点上免费且功能完整。权威安装脚本发布在 https://www.tiyisec.com/install.sh

$ curl -fsSL https://www.tiyisec.com/install.sh | bash
$ tiyi --version
tiyi v3.5.3 linux/amd64

脚本会下载与平台匹配的二进制,比对 SHA-256 manifest,并放到 /usr/local/bin/tiyi。默认先尝试 GitHub,失败或过慢时回退到 Gitee Release 镜像;必要时可用 TIYI_MIRROR=gitee 强制使用 Gitee:

$ curl -fsSL https://gitee.com/tiyisec/tiyi/raw/main/install.sh | TIYI_MIRROR=gitee bash

安装器环境变量:TIYI_MIRROR=auto|github|giteeTIYI_REPO=zzmzm/tiyiTIYI_GITEE_REPO=tiyisec/tiyiTIYI_VERSION=v3.5.3TIYI_PREFIX=/usr/local/bin

公开分发仓库:GitHub zzmzm/tiyiGitee tiyisec/tiyi

linux/amd64linux/arm64 是一等目标。请在 Controller、远程 Agent 与独立 dashboard 主机上安装同一个签名版本。

配置文件

太一读取一份 Koanf 风格的 YAML 配置。从下面这份最小配置起步,其余靠默认:

# /etc/tiyi/tiyi.yaml
server:
  addr: "0.0.0.0:8080"

store:
  state_db: "/var/lib/tiyi/state.db"

crypto:
  kek_file: "/etc/tiyi/kek.bin"      # 32 字节静态加密密钥

auth:
  jwt_secret: "<32+ 字节随机>"      # HS256 签名密钥

proxy:
  http_addr:  ":80"
  https_addr: ":443"
  caddy_admin_socket: "/var/lib/tiyi/caddy-admin.sock"

--config 传入。这份配置使用 /var/lib/tiyi 与 80/443 端口,因此请以 root 运行(或用下面的 systemd unit):

$ sudo tiyi run --config /etc/tiyi/tiyi.yaml || sudo /usr/local/bin/tiyi run --config /etc/tiyi/tiyi.yaml

若想以普通用户、不用 sudo 试用,可以不走配置文件,而是在命令行上传入可写路径与高端口 —— 见快速开始

上线前两个字段必须显式设置。crypto.kek_fileauth.jwt_secret 都有不能跨重启幸存的开发友好回退。详见部署 → 生产加固

配置环境变量

持久化服务配置优先写入 /etc/tiyi/tiyi.yaml。只有当 service manager、容器运行时或密钥管理器需要在运行时注入配置时,才使用环境变量。优先级是:内置默认值、tiyi.yaml、配置环境变量、显式 CLI 参数。

环境变量名与配置键一一对应:加 TIYI_ 前缀,转为大写,并把点替换为下划线。例如 auth.jwt_secret 对应 TIYI_AUTH_JWT_SECRET

常用配置覆盖

变量配置键适用场景
TIYI_SERVER_ADDRserver.addr把 API / 控制台绑定到不同地址。
TIYI_STORE_STATE_DBstore.state_db移动 SQLite 状态数据库。
TIYI_LOG_LEVELlog.level临时调整进程日志级别。
TIYI_PROXY_HTTP_ADDRproxy.http_addr修改 HTTP 数据面监听地址。
TIYI_PROXY_HTTPS_ADDRproxy.https_addr修改 HTTPS 数据面监听地址。
TIYI_PROXY_CADDY_ADMIN_SOCKETproxy.caddy_admin_socket移动内嵌 Caddy admin socket。
TIYI_CRYPTO_KEK_FILEcrypto.kek_file为生产环境固定静态加密 KEK 路径。
TIYI_AUTH_JWT_SECRETauth.jwt_secret为生产环境设置稳定 JWT 签名密钥。
TIYI_AUTH_BOOTSTRAP_ADMIN_USERNAMEauth.bootstrap_admin_username指定首个管理员用户名。
TIYI_AUTH_BOOTSTRAP_ADMIN_PASSWORDauth.bootstrap_admin_password为自动化指定首个管理员密码。
TIYI_LICENSE_KEY_PATHlicense.key_path启动时加载签名 license 文件。
TIYI_UPDATE_REPOupdate.repo覆盖更新检查使用的 GitHub release 仓库。
TIYI_UPDATE_CHANNELupdate.channeltiyi update 使用 stableprerelease
TIYI_UPDATE_MIRRORupdate.mirror更新检查/下载使用 autogithubgitee

较少使用的配置键也遵循同一规则,包括 auth.access_token_ttlauth.refresh_token_ttlauth.refresh_cookie_secureauth.bootstrap_admin_emailauth.bootstrap_admin_nameauth.providerauth.ldap.*auth.radius.*update.api_base_url。除非部署平台必须通过环境变量注入,否则这些项优先写 YAML。

运行命令

同一个二进制提供一个完整运行时与两个专用进程:

run
一个始终可写的 Controller,包含本机数据平面、API 与管理界面。这是默认安装与五分钟路径。
agent
远程数据平面:Caddy + Coraza,通过一条 ConnectRPC 长连接从唯一的 Controller URL 接收已签名 bundle。
dashboard
仅 UI 的专用进程,不持有状态也不代理流量。

入网一个节点

打开节点 → 安装远端节点签发 Token,再按页面分别显示的二进制下载和 systemd 步骤操作。页面也会显示原始 Token、前台命令和完整下载启动脚本:

$ sudo curl -fsSL -o /usr/local/bin/tiyi 'https://tiyi.example.com/download/tiyi'
$ sudo chmod 0755 /usr/local/bin/tiyi
$ sudo mkdir -p /etc/tiyi
$ printf 'TIYI_CONTROLLER_URL=https://tiyi.example.com\nTIYI_AGENT_ENROLLMENT_TOKEN=<一次性Token>\n' | sudo tee /etc/tiyi/tiyi-agent.env >/dev/null
$ sudo chmod 0600 /etc/tiyi/tiyi-agent.env
$ sudo tiyi install --mode agent --unit-name tiyi-agent --now

丢失 state 目录后,需要重新签发 Token 入网。

以 systemd 服务运行

长期运行的部署,让太一把自己装成一个加固过的 systemd 服务。tiyi install 会创建 tiyi 服务用户与 tiyi-admin 套接字组、写入 unit,加上 --now 则同时开机自启并立即启动:

$ sudo tiyi install --now

不带 --now 执行 sudo tiyi install 时,安装器会按设计只写入并 reload unit,保持未启用、未启动,方便先完成各运行模式的配置。首次启动 Controller 时,请在原安装命令上补上 --now 后重新执行,不要直接用 systemctl 启动 unit。这样安装器能先创建管理员,并把一次性登录信息打印在当前终端,而不是把密码写入 system journal。

该服务以非 root 身份运行,通过 CAP_NET_BIND_SERVICE 绑定 80/443 端口。每次启动前,unit 会先用 root-only 的 pre-start 钩子把配置里的状态目录和 KEK 文件重新交给服务用户;之前 sudo 前台运行留下的 CRS 缓存、上传、排除包、release 暂存、日志、trust 快照或内嵌 agent 状态目录不会再阻塞运行期写入。首次安装时,--now 会预先创建管理员,并在启动服务后直接打印一次性登录信息(URL、用户名、密码)——无需再去 journal 里捞:

tiyi is enabled and running as tiyi.service.

  Tiyi administrator created
    URL:       http://127.0.0.1:8080
    username:  admin
    password:  <生成的密码>

  This password is shown once; change it after signing in.

tiyi install --print 可在不改动系统的前提下预览生成的 unit。其关键指令:

# /etc/systemd/system/tiyi.service
[Service]
Type=simple
User=tiyi
Group=tiyi
PermissionsStartOnly=true
ExecStartPre=/usr/local/bin/tiyi systemd-prestart --config /etc/tiyi/tiyi.yaml --user tiyi --group tiyi
ExecStart=/usr/local/bin/tiyi run --config /etc/tiyi/tiyi.yaml --admin-socket /run/tiyi/admin.sock --admin-socket-group tiyi-admin --admin-socket-mode 0660 --caddy-admin-socket /run/tiyi/caddy.sock
Restart=on-failure
AmbientCapabilities=CAP_NET_BIND_SERVICE
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
StateDirectory=tiyi
RuntimeDirectory=tiyi
ConfigurationDirectory=tiyi
NoNewPrivileges=yes
ProtectSystem=strict
ProtectHome=yes
PrivateTmp=yes

[Install]
WantedBy=multi-user.target

tiyi doctor 检查 sudo PATH、systemd、配置加载、已安装服务的状态目录所有权,以及 80/443/8080 端口监听者。如果还没有安装 systemd unit,状态目录所有权检查会跳过,除非传入 --service-user/--service-group 或显式请求修复。如果它提示 sudo 找不到 tiyi,使用输出里的完整路径命令,或把 /usr/local/bin 加入 sudo secure_path。如果它提示状态目录里有 root 拥有的路径,显式运行 sudo tiyi doctor --fix-state-ownership 修复。如果它提示端口冲突,可以停止占用端口的服务,或通过 proxy.http_addrproxy.https_addrserver.addr 修改太一端口。用 --mode run 检查 Controller,或用 --mode agent 检查远程 Agent。用 sudo tiyi uninstall 移除该服务:除非加上 --purge,否则 /var/lib/tiyi 下的状态、/etc/tiyi 下的配置以及服务用户都会保留。

下一步阅读