show log include yuh

勉強したことの復習を兼ねて、IT関係(ネットワーク/サーバ/アプリケーション)についてまとめてます。たまに趣味のこと

スポンサーリンク

AIエージェント(Antigravity CLI)をブラウザ経由で動かし、スマホから操作

概要

ラズベリーパイ(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