GoTTY: Ваш терминал в браузере за 30 секунд

28 июл 2025

Репозиторий давно не обновлялся

Последнее обновление было 2 года назад.

19,548
1,407
323
2 года

Представьте: вам нужно быстро показать коллеге работу скрипта на удалённом сервере, провести демонстрацию команд или просто дать доступ к терминалу без сложных настроек SSH. Именно для таких сценариев создан GoTTY — утилита, которая превращает любую консольную команду в веб-приложение.

Что это и зачем

GoTTY — это написанный на Go инструмент, который запускает веб-сервер и транслирует ваш терминал в браузер. По сути, это мост между консолью и веб-интерфейсом, работающий через WebSocket. Проект насчитывает больше 19 тысяч звёзд на GitHub и активно используется разработчиками по всему миру.

Демонстрация работы GoTTY

Основные возможности:

  1. Лёгкий доступ — достаточно одного запуска, чтобы получить URL для доступа к терминалу
  2. Кроссплатформенность — работает везде, где есть Go (Linux, macOS, Windows)
  3. Безопасность — поддержка HTTPS, аутентификации и ограничений доступа
  4. Гибкость — можно запускать любые CLI-утилиты, от top до docker run

Как это работает

Установка занимает минуту. Для macOS:

brew install yudai/gotty/gotty

Или скачайте бинарный файл для своей ОС из раздела релизов.

Реклама

Запуск прост как echo:

gotty top

После этого открываете http://localhost:8080 и видите работающий top прямо в браузере. По умолчанию GoTTY слушает порт 8080, но это можно изменить флагом -p.

Продвинутые сценарии

Совместная работа через tmux:

gotty tmux new -A -s shared_session htop

Демонстрация в Docker:

gotty -w docker run -it --rm alpine

Безопасный доступ с HTTPS и аутентификацией:

gotty -t -c admin:secretpassword -- perl -e 'print "Hello secure world!\n"; sleep 3600'

Под капотом

GoTTY использует:

  • xterm.js для эмуляции терминала в браузере
  • WebSocket для двусторонней связи
  • Go для высокопроизводительного бэкенда

Проект поддерживает кастомизацию через конфиг-файл ~/.gotty, где можно задать параметры вроде:

port = "9000"
enable_tls = true

preferences {
    font_size = 5
    background_color = "rgb(16, 16, 32)"
}

Когда это полезно

  1. Демонстрации — показывайте работу утилит без скриншеров
  2. Удалённая помощь — давайте временный доступ к терминалу
  3. Обучение — студенты видят команды преподавателя в реальном времени
  4. Мониторинг — выводите top, htop или nmon на общий экран

Альтернативы

  • ttyd — версия с поддержкой CJK
  • Wetty — Node.js аналог
  • termshare — для временного доступа

GoTTY — это тот редкий инструмент, который решает узкую задачу, но делает это блестяще. Если вам нужно быстро и безопасно расшарить терминал — попробуйте. Для сложных сценариев есть интеграция с tmux и Docker. Простота установки и богатые возможности делают его must-have в арсенале разработчика.

Кому особенно пригодится:

  • DevOps-инженерам
  • Преподавателям IT-дисциплин
  • Командам, работающим с удалёнными серверами
  • Всем, кто устал объяснять «как это у тебя выглядит?»

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.