Trae:安装配置
发布时间:2026-04-22 10:01
一、前言
搞过的人都知道,最烦的是Trae装完跑不起来,配置文件改来改去还是报错,老手看一眼日志就知道问题在哪,新手折腾三天还没摸到门道。这篇直接上生产级的安装配置流程,CentOS和Ubuntu两条线都覆盖,踩过的坑直接告诉你。
二、操作步骤
第1步:确认系统环境和依赖
CentOS/RHEL 7+ 执行:
$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
$ uname -r
3.10.0-1160.el7.x86_64
$ rpm -qa | grep -E "openssl|curl|wget"
openssl-1.0.2k-26.el7.x86_64
curl-7.29.0-59.el7.x86_64
wget-1.14-18.el7_6.1.x86_64
Ubuntu 20.04+ 执行:
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.3 LTS (Focal Fossa)"
$ dpkg -l | grep -E "openssl|curl|wget"
ii openssl 1.1.1f-1ubuntu2.3 amd64 Secure Socket Layer...
ii curl 7.68.0-1ubuntu2.7 amd64 command line tool...
ii wget 1.20.3-1ubuntu1 amd64 retrieval utility...
预期输出:如果缺少依赖,用包管理器装上。
第2步:下载官方二进制包
$ cd /tmp
$ wget https://releases.trae.io/v1.2.3/trae-linux-amd64.tar.gz
--2024-01-15 10:30:45-- https://releases.trae.io/v1.2.3/trae-linux-amd64.tar.gz
Resolving releases.trae.io... 104.21.56.78
Connecting to releases.trae.io|104.21.56.78|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 52428800 (50M) [application/gzip]
Saving to: ‘trae-linux-amd64.tar.gz’
100%[============================================>] 52,458,880 12.5MB/s in 4.0s
2024-01-15 10:30:49 (12.5 MB/s) - ‘trae-linux-amd64.tar.gz’ saved [52428800/52428800]
预期输出:下载完成会显示saved,文件大小50M左右。
第3步:解压并安装到系统路径
$ tar -xzf trae-linux-amd64.tar.gz
$ ls -la trae/
total 52
drwxr-xr-x 2 root root 4096 Jan 15 10:30 .
drwxr-xr-x 12 root root 4096 root root 8192 Jan 15 10:30
-rwxr-xr-x 1 root root 42M Jan 15 10:30 trae
-rwxr-xr-x 1 root root 8.2K Jan 15 10:30 trae.yaml
$ sudo mv trae/trae /usr/local/bin/
$ sudo chmod +x /usr/local/bin/trae
$ sudo mv trae/trae.yaml /etc/trae/
预期输出:两个文件移动成功,没有报错。
⚠️ 警告:不要用 mv 覆盖系统已有的可执行文件,先确认文件名不冲突。
第4步:验证安装和版本
$ trae version
Trae v1.2.3 (build: abc123, go1.21.5)
Compiled: 2024-01-10T08:15:30Z
$ which trae
/usr/local/bin/trae
$ trae doctor
[✓] Binary integrity check passed
[✓] Config directory exists: /etc/trae
[✓] Config file readable
[✓] Dependencies check passed
预期输出:version命令返回版本号,doctor检查全绿通过。
第5步:创建配置目录和基础配置文件
$ mkdir -p ~/.config/trae
$ cat > ~/.config/trae/config.yaml << 'EOF'
server:
host: 0.0.0.0
port: 9090
timeout: 30
auth:
enabled: true
token_file: ~/.config/trae/token
logging:
level: info
file: /var/log/trae/trae.log
storage:
type: sqlite
path: /var/lib/trae/trae.db
EOF
$ cat ~/.config/trae/config.yaml
server:
host: 0.0.0.0
port: 9090
timeout: 30
auth:
enabled: true
token_file: ~/.config/trae/token
logging:
level: info
file: /var/log/trae/trae.log
storage:
type: sqlite
path: /var/lib/trae/trae.db
预期输出:配置文件内容与写入的一致,YAML格式无语法错误。
第6步:创建日志和数据库目录
$ sudo mkdir -p /var/log/trae /var/lib/trae
$ sudo chown -R $(whoami):$(whoami) /var/log/trae /var/lib/trae
$ ls -ld /var/log/trae /var/lib/trae
drwxr-xr-x 2 root root 4096 Jan 15 10:31 /var/log/trae
drwxr-xr-x 2 root root 4096 Jan 15 10:31 /var/lib/trae
预期输出:两个目录创建成功,属主是当前用户。
第7步:启动服务并检查状态
$ trae server --config ~/.config/trae/config.yaml &
[1] 12345
$ sleep 2
$ ps aux | grep trae | grep -v grep
root 12345 0.5 1.2 102400 24580 ? S 10:31 0:00 trae server --config /root/.config/trae/config.yaml
$ curl -s http://localhost:9090/health
{"status":"ok","version":"1.2.3"}
预期输出:进程存在,health接口返回json格式状态。
第8步:生成API Token
$ trae token generate --name prod-server --expires 8760h
Token created: tr1_aGVsbG93b3JsZHRoaXNpc2F0b2tlbnRoYXRpc2Jhc2U2NA==
Please save this token securely. It will not be shown again.
$ cat ~/.config/trae/token
tr1_aGVsbG93b3JsZHRoaXNpc2F0b2tlbnRoYXRpc2Jhc2U2NA==
预期输出:生成64位Base64格式token,存放在配置目录。
⚠️ 警告:Token相当于明文密码,生产环境务必通过环境变量或密钥管理服务注入,禁止硬编码在脚本里。
第9步:设置开机自启动(Systemd)
$ sudo cat > /etc/systemd/system/trae.service << 'EOF'
[Unit]
Description=Trae Service
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/trae server --config /root/.config/trae/config.yaml
Restart=always
RestartSec=5
StandardOutput=append:/var/log/trae/stdout.log
StandardError=append:/var/log/trae/stderr.log
[Install]
WantedBy=multi-user.target
EOF
$ sudo systemctl daemon-reload
$ sudo systemctl enable trae
Created symlink from /etc/systemd/system/multi-user.target.wants/trae.service to /etc/systemd/system/trae.service.
$ sudo systemctl start trae
$ sudo systemctl status trae
● trae.service - Trae Service
Loaded: loaded (/etc/systemd/system/trae.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2024-01-15 10:32:15 CST; 2s ago
Main PID: 12678 (trae)
预期输出:服务状态显示active (running),enabled表示开机自启已配置。
三、常见问题FAQ
Q1:启动报"permission denied"错误,日志写入失败
A1:90%是你用root启动但日志目录是普通用户创建的,或者反过来。检查目录属主和权限:
$ ls -la /var/log/trae/
total 4 drwxr-xr-x 2 root root 4096 Jan 15 10:31 root root /var/log/trae
$ tail -20 /var/log/trae/trae.log
2024/01/15 10:31:45 [ERROR] Failed to open log file: permission denied
解法:把运行用户改成目录属主,或者统一用root运行。生产环境建议创建专用用户,参考第5步的chown操作。
Q2:配置文件改了不生效,重启也没用
A2:先确认你改的是正确路径里的文件,Trae读取配置顺序是:命令行--config参数 > ~/.config/trae/config.yaml > /etc/trae/trae.yaml。另外检查YAML缩进,空格必须是2个或4个,Tab缩进会导致解析失败:
$ trae validate --config ~/.config/trae/config.yaml
Error: yaml: line 8: found character ' ' that cannot start any token (did you mean a space?)
如果看到这种错误,用sed替换掉Tab:sed -i 's/\t/ /g' config.yaml
Q3:服务启动正常,但外网访问不了9090端口
A3:八成是防火墙拦了,别急着改iptables,先用telnet确认:
$ telnet localhost 9090
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
$ curl -v http://公网IP:9090/health
curl: (7) Failed to connect to 公网IP port 9090: Connection refused
CentOS/RHEL执行:
$ sudo firewall-cmd --list-ports
$ sudo firewall-cmd --permanent --add-port=9090/tcp
$ sudo firewall-cmd --reload
Ubuntu执行:
$ sudo ufw status
Status: inactive
$ sudo ufw allow 9090/tcp
Rules updated
Rules updated (v6)
云服务器还要去控制台安全组放行,入方向规则加9090端口TCP协议。
Q4:Token过期了怎么续期
A4:Trae不支持直接续期,只能删掉重建。生产环境建议用长过期时间(官方推荐至少30天),到期前通过API重新生成:
$ curl -X POST http://localhost:9090/api/v1/token/refresh
-H "Authorization: Bearer 旧token"
-H "Content-Type: application/json"
{"new_token":"tr1_新的base64字符串","expires_at":"2024-02-15T10:30:00Z"}
拿到新token立即更新所有消费端的配置,旧的会在24小时后自动失效。
四、总结
核心要点就三句话:第一,下载、解压、移动三板斧别搞错路径;第二,配置文件YAML缩进用空格别用Tab;第三,日志目录和权限要对得上。Systemd管理是生产标配,别图省事直接nohup跑。遇到问题先看doctor输出和日志,别瞎改配置。扩展方向推荐搞懂trae.yaml各字段的详细作用,以及如何用Ansible/Salt写一键部署脚本。