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_timeoutproxy_send_timeout 的值。

总结

TTYD 是功能丰富且高性能的 Web 终端工具,非常适合在搬瓦工 VPS 上部署以提供浏览器访问终端的能力。建议配合 Nginx 反向代理和 SSL 证书使用。选购搬瓦工 VPS 请参考 全部方案,购买时使用优惠码 NODESEEK2026 可享受 6.77% 折扣。相关工具:GoTTY 教程WebSSH 教程

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。