TTYD Web 终端工具部署教程
TTYD 是 GoTTY 的 C 语言重新实现版本,功能更完善、性能更优异。它可以将任意终端命令通过 WebSocket 共享到浏览器中,支持 SSL/TLS 加密、基本认证、自定义主题等特性。TTYD 的内存占用极低,非常适合在搬瓦工 VPS 上长期运行,为服务器提供一个基于浏览器的终端访问入口。
一、安装 TTYD
1.1 使用包管理器安装
apt update && apt upgrade -y
# Ubuntu/Debian 可以直接安装
apt install ttyd -y
1.2 下载预编译二进制文件
如果系统仓库中没有 TTYD 或版本较旧:
wget https://github.com/tsl0922/ttyd/releases/latest/download/ttyd.x86_64 -O /usr/local/bin/ttyd
chmod +x /usr/local/bin/ttyd
验证安装:
ttyd --version
1.3 从源码编译(可选)
apt install build-essential cmake git libjson-c-dev libwebsockets-dev -y
git clone https://github.com/tsl0922/ttyd.git
cd ttyd && mkdir build && cd build
cmake ..
make && make install
二、基本使用
2.1 启动终端
# 启动一个 bash 终端
ttyd bash
默认在 7681 端口启动,通过浏览器访问 http://YOUR_VPS_IP:7681。
2.2 自定义端口和绑定地址
ttyd -p 8080 -i 0.0.0.0 bash
2.3 只读模式
# 共享命令输出,浏览器端不可输入
ttyd -R htop
三、安全配置
3.1 基本认证
ttyd -c admin:YourStrongPassword bash
3.2 SSL/TLS 加密
# 使用 Let's Encrypt 证书
ttyd --ssl \
--ssl-cert /etc/letsencrypt/live/your-domain.com/fullchain.pem \
--ssl-key /etc/letsencrypt/live/your-domain.com/privkey.pem \
-c admin:YourStrongPassword \
bash
3.3 限制最大连接数
ttyd --max-clients 5 -c admin:YourStrongPassword bash
3.4 启用一次性模式
# 客户端断开后自动退出
ttyd --once bash
四、高级配置
4.1 自定义终端主题
# 设置终端主题
ttyd -t fontSize=16 \
-t fontFamily="Fira Code, monospace" \
-t theme='{"background":"#1e1e2e","foreground":"#cdd6f4"}' \
bash
4.2 设置基础 URL 路径
# 配合反向代理时使用
ttyd --base-path /terminal bash
4.3 允许客户端连接特定URL
# 启用 URL 参数传递命令
ttyd --url-arg bash
五、Nginx 反向代理
cat > /etc/nginx/sites-available/ttyd <<'EOF'
server {
listen 443 ssl http2;
server_name terminal.your-domain.com;
ssl_certificate /etc/letsencrypt/live/terminal.your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/terminal.your-domain.com/privkey.pem;
location /terminal/ {
proxy_pass http://127.0.0.1:7681/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
}
}
EOF
ln -sf /etc/nginx/sites-available/ttyd /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
六、使用 systemd 管理
cat > /etc/systemd/system/ttyd.service <<'EOF'
[Unit]
Description=TTYD Web Terminal
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/ttyd -p 7681 -i 127.0.0.1 -c admin:YourStrongPassword --max-clients 10 bash
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable ttyd
systemctl start ttyd
七、Docker 部署
docker run -d --name ttyd \
-p 7681:7681 \
--restart always \
tsl0922/ttyd \
-c admin:YourStrongPassword \
bash
使用 Docker Compose:
cat > docker-compose.yml <<'EOF'
version: '3.8'
services:
ttyd:
image: tsl0922/ttyd
container_name: ttyd
restart: always
ports:
- "7681:7681"
command: >
-c admin:YourStrongPassword
--max-clients 10
bash
EOF
docker compose up -d
八、与 GoTTY 的对比
- 语言:TTYD 使用 C 语言编写,GoTTY 使用 Go 语言。
- 性能:TTYD 内存占用更低,适合长期运行。
- 功能:TTYD 支持更多终端特性,如自定义主题、xterm.js 选项等。
- 维护:TTYD 维护更加活跃,版本更新频繁。
九、常见问题
浏览器显示空白
检查防火墙是否开放了对应端口:
ufw allow 7681/tcp
WebSocket 断开
调整 Nginx 的超时设置,增加 proxy_read_timeout 和 proxy_send_timeout 的值。
总结
TTYD 是功能丰富且高性能的 Web 终端工具,非常适合在搬瓦工 VPS 上部署以提供浏览器访问终端的能力。建议配合 Nginx 反向代理和 SSL 证书使用。选购搬瓦工 VPS 请参考 全部方案,购买时使用优惠码 NODESEEK2026 可享受 6.77% 折扣。相关工具:GoTTY 教程、WebSSH 教程。