概要
ラズベリーパイ(Raspberry Pi)上で、CLIベースのAIツール「Antigravity(agy) CLI」を動かしていると、PCだけでなくスマホからも手軽にアクセスして操作したくなることがあります。 今回は「ttyd」というツールを利用して、ラズパイ上のターミナルをWebブラウザ化し、スマホから直接agyを起動・操作できるようにする手順を記載します。
前提としてローカルNW構築
- インターネットに公開しないように気をつけて下さい
ttyd と tmux
ttydはバックグラウンドのシェルをWebブラウザ(HTTP/WebSocket)へリアルタイムに配信し描画するツールで、tmuxはブラウザを閉じてもagyのセッション(作業状態)を維持するためのマルチプレクサです。 今回はこれらのソフトウェアを利用します。 ttydとtmuxをインストール
brew install ttyd tmux
インストールが成功したことを確認します。(Antigravity CLIをパッケージマネージャーで入れるためにbrew導入済みです)
ttyd --version tmux -V
systemdでサービス化
ラズパイ起動時に自動でWebターミナルが立ち上がるよう、設定ファイルを作成します。
sudo vim /etc/systemd/system/agy-web.service
以下の内容を記述して保存します。
[Unit] Description=ttyd Web Terminal for agy CLI After=network.target [Service] Type=simple User=<あなたのユーザー名> WorkingDirectory=/home/<あなたのユーザー名> Environment="PATH=/home/linuxbrew/.linuxbrew/bin:/usr/local/bin:/usr/bin:/bin" Environment="TERM=xterm-256color" ExecStart=/bin/bash -c 'ttyd -p 8080 -W -t fontSize=16 tmux new-session -A -s agy-web "agy"' Restart=always RestartSec=5 [Install] WantedBy=multi-user.target
サービスの起動と確認 設定を反映し、サービスを起動・有効化します。
sudo systemctl daemon-reload sudo systemctl restart agy-web.service sudo systemctl enable agy-web.service
ステータスが active (running) になっていることを確認します。
sudo systemctl status agy-web.service
SSL化とbasic認証
念のためSSLとbasic認証をしてセキュリティを担保します
10年有効な証明書(cert.pem)と秘密鍵(key.pem)を作成
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 3650 -nodes -subj "/CN=localhost"
証明書を移動
sudo mkdir -p /etc/ssl/ttyd sudo mv ~/cert.pem /etc/ssl/ttyd/ sudo mv ~/key.pem /etc/ssl/ttyd/
パーミッション変更
sudo chown <あなたのユーザー名>:<あなたのユーザー名> /etc/ssl/ttyd/cert.pem /etc/ssl/ttyd/key.pem sudo chmod 600 /etc/ssl/ttyd/key.pem
サービスファイル
sudo vim /etc/systemd/system/agy-web.service
ExecStart=/bin/bash -c 'ttyd -c <あなたのユーザー名>:<設定パスワード> --ssl --ssl-cert /etc/ssl/ttyd/cert.pem --ssl-key /etc/ssl/ttyd/key.pem -p 8080 -W -t fontSize=16 tmux new-session -A -s agy-web "agy"'
再起動
sudo systemctl daemon-reload sudo systemctl restart agy-web.service