
同僚とサーバーの問題をトラブルシューティングしたり、複雑なコマンドを友人に見せたりなど、ターミナルでの作業をリアルタイムで確認したいと思ったことはありませんか?スクリーンショットを撮ったり画面を録画したりする代わりに、シンプルなウェブリンクでターミナルセッションを共有できる便利さを想像してみてください。この方法は、コラボレーションを強化するだけでなく、作業をリアルタイムで可視化することもできます。
Linuxには、SSHなどの従来の方法、tmuxやscreenなどのツール、asciinemaのような画面録画ユーティリティなど、様々なターミナル共有方法があります。これらの方法は効果的である一方で、不要な複雑さや追加の依存関係を伴い、ワークフローの妨げになることがよくあります。
ttyd コマンドライン ツールを入力します。ttyd は、ターミナルを Web インターフェイスに変換することでターミナルの共有を簡素化し、追加のソフトウェアをインストールしたり設定を構成したりすることなく、リンクを持つすべてのユーザーがセッションにアクセスして対話できるようにします。
ttydの主な機能
- 優れたパフォーマンスを実現するために Libwebsockets と libuv を活用します。
- WebSocket を採用することで、接続が制限されている場合でもシームレスなエクスペリエンスを実現します。
- ファイル転送用のグラフィカル ZMODEM をサポートし、ユーザーは Web ブラウザから直接ファイルをドラッグ アンド ドロップできます。
- 認証オプションとともに、安全なセッションを確保するための SSL/TLS 暗号化が含まれています。
- 指定された任意のポート上で実行され、Raspberry Pi などのデバイスへの展開に互換性があります。
- ターミナルと Web インターフェイス間のコピー/貼り付け機能が組み込まれています。
- セッション管理のために同時接続を制限する機能。
- デフォルトの Web ブラウザでセッションを自動的に開きます。
- セキュリティを強化するために、単一クライアントのアクセス制限を有効にします。
Linuxにttydをインストールする方法
DebianまたはUbuntuをお使いの場合、ttydがデフォルトのリポジトリに存在しないことに気付くかもしれません。ただし、ソースからのビルドなど、代替手段を利用すれば簡単にインストールできます。
まず、システムが完全に更新されていることを確認します。
sudo apt update && sudo apt upgrade -y
次に、ttyd をコンパイルするために必要な依存関係をインストールします。
sudo apt install -y build-essential cmake git libjson-c-dev libwebsockets-dev

GitHub から ttyd リポジトリをクローンし、次のコマンドを使用してコンパイルします。
git clone https://github.com/tsl0922/ttyd.git cd ttyd mkdir build && cd build cmake..make sudo make install
これで完了です。これで ttyd がシステムにインストールされました。
他のLinuxディストリビューションでも、同様のビルドガイドラインに従うか、ttydのGitHubリリースページからコンパイル済みバイナリをダウンロードしてください。素早くダウンロードするには、次のwgetコマンドを使用します。
wget https://github.com/tsl0922/ttyd/releases/download/1.7.7/ttyd.x86_64
ダウンロードしたバイナリを実行可能にします。
chmod +x ttyd.x86_64
この方法は、様々なLinuxディストリビューションでttydを動作させるための最も迅速な方法の一つです。Snapなどの汎用パッケージマネージャーを使ってttydをインストールすることもできます。
sudo snap install ttyd --classic
ttyd がインストールされたら、 と入力してインストールを確認しますttyd --version
。
端末を共有可能なWebインターフェースに変換する
ttydを活用する最も簡単な方法は、デフォルトのシェルセッションを共有することです。以下のコマンドを実行してください。
ttyd bash
このコマンドは、デフォルトでポート7681でWebサーバーを起動します。Webサーバーにアクセスするには、Webブラウザを開いてhttp://localhost:7681またはhttp://your-ip-address:7681にアクセスしてください。

これで、ターミナルがウェブページ内に表示されるようになり、ローカルネットワーク上のユーザーは「localhost」をマシンのIPアドレスに置き換えることでアクセスできます。IPアドレスは、ip addr show
またはを使用して確認し、hostname -I
他のユーザーと共有できます。
ttyd はシェルを共有するだけでなく、ブラウザで他のコマンドラインアプリケーションを公開することもできます。例えば、 コマンドはプロセスマネージャttyd htop
を直接起動しますが、または はそれぞれのツールを共有します。htop
ttyd vim
ttyd top

セッションのポート番号をカスタマイズしたい場合は、次の-p
フラグを使用して簡単に行うことができます。
ttyd -p 8080 bash
これにより、ターミナルはデフォルトの 7681 ではなくポート 8080 で使用できるようになります。
不正アクセスを防ぐために、ttyd は次の-c
オプションによる認証もサポートしています。
ttyd -c username:password bash

この設定では、基本的なHTTP認証が要求され、端末にアクセスしようとするすべてのユーザーが指定された認証情報を入力することが必須となります。本番環境ではより高度な認証が推奨されますが、この方法は非公式なデモや信頼できるネットワークでは効果的です。
さらに、読み取り専用セッションを作成して、ユーザーからの入力を禁止することもできます。
ttyd -R bash
これは、プレゼンテーションや教育現場で制御を維持したい場合に特に便利です。逆に、-W
書き込み可能でインタラクティブなセッションにはフラグを使用します。
ttyd -W bash
インターネットを介した安全な共有
インターネット経由で端末を共有する場合、暗号化の実装が不可欠です。ttydは、独自のSSL証明書を使用したHTTPSサポートを提供しています。SSL証明書をお持ちでない場合は、テスト目的でOpenSSLを使用して自己署名証明書を作成できますが、本番環境ではLet’s Encryptなどの信頼できる認証局を利用することをお勧めします。
ttyd はデフォルトではローカルネットワークからのみアクセス可能ですが、このアクセスを外部に拡張する必要が生じることがよくあります。これを安全に実現するには、いくつかの方法があります。最も簡単な方法の一つは、Tailscale やCloudflare Tunnelなどのトンネリングサービスと ttyd を統合することです。これにより、一時的なパブリック URL を介してローカルポートをインターネット上で安全に利用できるようになります。あるいは、ドメイン名を持つ VPS またはクラウドサーバー上で ttyd をホストし、永続的な HTTPS アクセスを実現することもできます。
より高度な設定が必要な場合は、ttyd を localhost のみにバインドし、Nginx や Caddy などのリバースプロキシの背後に配置することもできます。この設定により、SSL ターミネーション、認証、詳細なアクセス制御が可能になります。
結論
ttyd を使用すると、端末共有の複雑なプロセスが、ハイパーリンクの共有に似た簡単な作業に変わります。
コメントを残す