目的
GoogleからGeminiCLIがリリースされた。FreeBSDでも使用できるか試すことにする。お試しなのでJail上に構築してエージントが暴走しても影響を少くする。
要件
以下に環境要件を示す。
- FreeBSD 14.3-RELEASE
- appjail-devel-3.6.0.20250211
AppJailはFreeBSD用のJail管理ソフトで、Makejail等を利用することでJail上に各種サーバを容易に構築できる。AppJailの詳細はAppJail Handbook、MakejailはAppJail-makejailsで確認すること。
以下は、AppJailの導入とVirtual Network(NAT)の設定、appjail-dnsによるJailの名前解決が完了したことを前提とする。
GeminiCLI環境の構築
Jailの作成
以下のコマンドでNATを使用したJailを構築する。
# appjail quick gemini virtualnet=":<random> default" nat overwrite start
これで"gemini"と名付けられたJailが作成される。
パッケージのインストール
作成したJailにログインし、GeminiCLIを動作するのに必要なパッケージをインストールする。ログインは以下の通り。
# appjail login gemini
Jailにログインしたら、パッケージをインストールする。
root@gemini:~ # pkg
root@gemini:~ # pkg update
root@gemini:~ # pkg install npm-node23
root@gemini:~ # node --version
v23.11.1
root@gemini:~ # npm --version
10.9.2
gitやvim等のツールも必要であればインストールする。
GeminiCLIのインストール
以下のコマンドでGeminiCLIをインストールする。
root@gemini:~ # npm install -g @google/gemini-cli
root@gemini:~ # gemini --version
0.1.10
一般ユーザの作成とsshdの起動
Jailでもrootユーザでエージェントを動かすのは良くないので、作業用に一般ユーザを作成し、外部からログイン用にsshdも起動する。
root@gemini:~ # adduser
root@gemini:~ # sysrc sshd_enable=YES
root@gemini:~ # service sshd start
GeminiCLIの動作確認
AppJailで構築したJailへホスト側からsshを使用してログインする。
% ssh user@gemnini
あとはGeminiCLIの設定をすれば、作業完了となる。ssh越しでGoogleアカウントによるログインは不可能ではないが面倒なので、GEMINI_API_KEYを準備して以下を設定すると良い。
setenv GEMINI_API_KEY 取得したAPI KEY
setenv GEMINI_MODEL gemini-2.5-flash # モデルを指定したい場合
AppJailのリポジトリをクローンし、ディレクトリ内で解析を指示した結果がこちらになる。
█████████ ██████████ ██████ ██████ █████ ██████ █████ █████
███░░░░░███░░███░░░░░█░░██████ ██████ ░░███ ░░██████ ░░███ ░░███
███ ░░░ ░███ █ ░ ░███░█████░███ ░███ ░███░███ ░███ ░███
░███ ░██████ ░███░░███ ░███ ░███ ░███░░███░███ ░███
░███ █████ ░███░░█ ░███ ░░░ ░███ ░███ ░███ ░░██████ ░███
░░███ ░░███ ░███ ░ █ ░███ ░███ ░███ ░███ ░░█████ ░███
░░█████████ ██████████ █████ █████ █████ █████ ░░█████ █████
░░░░░░░░░ ░░░░░░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░
Tips for getting started:
1. Ask questions, edit files, or run commands.
2. Be specific for the best results.
3. Create GEMINI.md files to customize your interactions with Gemini.
4. /help for more information.
╭──────────────────────────────────────────────────╮
│ > ディレクトリ内のプロジェクトについて説明して │
╰──────────────────────────────────────────────────╯
╭────────────────────────╮
│ ✔ ReadFile README.md │
╰────────────────────────╯
✦ AppJailは、sh(1)とC言語で書かれたオープンソースのBSD-3ライセンスフレーム
ワークです。FreeBSD
jailsを使用して、アプリケーションのように動作する隔離されたポータブルで
デプロイしやすい環境を作成することを目的としています。
主な機能は以下の通りです。
* 使いやすさ
* 並列起動(ヘルスチェッカー、Jails、NAT)
* UFSおよびZFSのサポート
* RACCT/RCTLのサポート
* NATのサポートとポート公開
* IPv4およびIPv6のサポート、DHCPおよびSLAACのサポート
* 仮想ネットワーク、ブリッジ、VNETのサポート
* Makejailによるアプリケーションのデプロイ
* LinuxJailsのサポート
* Thin/Thick jailsおよびTinyJailsのサポート
* 起動順序制御とJailの依存関係のサポート
* Initscripts
* tarballまたはrawイメージ(ZFSのみ)によるJailのバックアップ
* モジュール構造とテーブルインターフェース
* データベース不要
* ヘルスチェッカー
* イメージ
* DEVFSのサポート
* OCIのサポート
AppJailは、ホストの変更を最小限に抑え、非対話的であり、自身で作成したJ
ail以外を操作しないように設計されています。また、すべてを自動化するの
ではなく、小さなコマンドを組み合わせて使用することを推奨しています。ソ
フトウェアのビルドには焦点を当てていません。
エージェントがディレクトリ内部のREADME.mdを見付け、内容を日本語で呈示したのが判る。
スナップショットの作成(オプション)
環境構築後にJailのスナップショットを作成しておくと、何か不具合が出た時に環境を元に戻したり、環境をクローンしたりすることができる。zfsが使用可能なら、以下で作成できる。
# appjail zfs snapshot gemini@snap1
御精讀ありがたうございました。