1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VPSのUbuntuにGemini CLIをセッティングするスクリプトを書いた

Posted at

はじめに

Gemini CLI メッチャ良いですよね?自分は普段から使っているのですが、VPSに設定してSSHして使えないかな?と思いやってみました。

環境

スクリプト

#!/bin/bash
set -e

# ==== 設定項目 ====
# ▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
# 【要編集】ここにあなたの公開鍵を貼り付けてください
PUBLIC_KEY="ssh-rsa AAAA... user@example.com"
# ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

NEW_SSH_PORT=2222
USERNAME="vpsuser"   # 作業用ユーザー

echo "[INFO] Ubuntu with Gemini CLIのセットアップを開始します..."

# 事前チェック
if [[ $PUBLIC_KEY == "ssh-rsa AAAA... user@example.com" ]]; then
    echo "エラー: スクリプト内のPUBLIC_KEY変数をあなたの公開鍵に書き換えてください。"
    exit 1
fi

# 1. パッケージ更新
echo "[1/6] パッケージ更新..."
sudo apt update && sudo apt upgrade -y
echo ""

# 2. ユーザー作成 & 公開鍵設定
echo "[2/6] 作業用ユーザー ($USERNAME) を準備しています..."
if id "$USERNAME" &>/dev/null; then
    echo "[INFO] ユーザー $USERNAME は既に存在します。"
else
    echo "[INFO] ユーザー $USERNAME を作成します。"
    sudo adduser --disabled-password --gecos "" $USERNAME
    sudo usermod -aG sudo $USERNAME
fi

echo "[INFO] パスワードなしでsudoを実行できるように設定します..."
sudo bash -c "echo \"${USERNAME} ALL=(ALL:ALL) NOPASSWD:ALL\" > \"/etc/sudoers.d/90-${USERNAME}\""
sudo chmod 440 /etc/sudoers.d/90-${USERNAME}
echo ""

echo "[INFO] ユーザー $USERNAME の公開鍵を設定します..."
USER_HOME=$(getent passwd $USERNAME | cut -d: -f6)
sudo mkdir -p "${USER_HOME}/.ssh"
sudo bash -c "echo \"${PUBLIC_KEY}\" > \"${USER_HOME}/.ssh/authorized_keys\""
sudo chmod 700 "${USER_HOME}/.ssh"
sudo chmod 600 "${USER_HOME}/.ssh/authorized_keys"
sudo chown -R ${USERNAME}:${USERNAME} "${USER_HOME}/.ssh"
echo ""

# 3. Node.js(Volta)のインストール
echo "[3/6] Voltaをインストール中..."
sudo -u ${USERNAME} bash -c 'curl https://get.volta.sh | bash'
echo ""

# 4. Node.jsとGemini Cliのインストール
echo "[4/6] Node.jsとGemini CLIをインストール中..."
sudo -u ${USERNAME} bash -c "${USER_HOME}/.volta/bin/volta install node"
sudo -u ${USERNAME} bash -c "${USER_HOME}/.volta/bin/volta install @google/gemini-cli"
echo ""

# 5. UFW設定(SSHポート許可)
echo "[5/6] UFWを設定中..."
sudo ufw allow ${NEW_SSH_PORT}/tcp
sudo ufw --force enable
echo ""

# 6. SSH設定変更(ポート + 公開鍵認証)
echo "[6/6] SSH設定を変更中..."
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.old
sudo sed -i -E "s/^#?Port 22/Port ${NEW_SSH_PORT}/" /etc/ssh/sshd_config
sudo sed -i -E "s/^#?PasswordAuthentication yes/PasswordAuthentication no/" /etc/ssh/sshd_config
sudo sed -i -E "s/^#PubkeyAuthentication yes/PubkeyAuthentication yes/" /etc/ssh/sshd_config
sudo sed -i -E "s/^#?PermitRootLogin yes/PermitRootLogin no/" /etc/ssh/sshd_config
sudo systemctl restart ssh
echo ""


echo "[INFO] Ubuntu with Gemini CLIのセットアップが完了しました!"
echo ""
echo "# システムの再起動"
echo "  sudo reboot"
echo ""
echo "# SSHでの接続方法"
echo "  ssh -p ${NEW_SSH_PORT} ${USERNAME}@サーバIP"
echo ""
echo "# Geminiの使用方法"
echo " 1. Gemini CLIを起動します"
echo "  gemini"
echo ""
echo ' 2. "Login with Google"を選択します(エラーになる想定)'
echo ""
echo " 3. 改めて任意のプロンプトでGemini CLIを起動します"
echo "  gemini -p 'Hi'"
echo ""
echo " 4. 認証用URLが表示されるので、SSH元のブラウザで認証します"
echo ""
echo " 5. 認証コードが表示されるのでターミナルに入力します"
echo ""

事前準備

公開鍵の作成

このスクリプトを実行するためには公開鍵が必要になります。
GitHubが分かりやすい手順を書いているので参考にしてください。

# SSHキーの作成
ssh-keygen -t ed25519 -C "your_email@example.com"

# 公開鍵をクリップボードにコピー
pbcopy < ~/.ssh/id_ed25519.pub

スクリプトの編集

作成した公開鍵をスクリプト上部に入力してください。
(PORT番号は必要であれば変更してください)

# ==== 設定項目 ====
# ▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
# 【要編集】ここにあなたの公開鍵を貼り付けてください 
- PUBLIC_KEY="ssh-rsa AAAA... user@example.com"
+ PUBLIC_KEY="ssh-ed25519 AAAXXXXaC1lZDI1NTE5AAAAIEDC4qmXIp1eqygFHfGoU13yHtaMfk904gN2lHLPrsFV your_email@gmail.com"
# ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

- NEW_SSH_PORT=2222
+ NEW_SSH_PORT=12345
USERNAME="vpsuser"   # 作業用ユーザー

使用方法

ローカルで作成してscpコマンドで配置するか、VPS上に直接スクリプトファイルを作成してください。

# 実行権限の付与
chmod +x gemini-cli.sh

# 実行
./gemini-cli.sh

SSH先でのGemini CLI認証方法

スクリプトの最後にも書いてありますが、Gemini CLIの認証方法を記載します。
デスクトップのないVPSなどを想定した方法になります。

1. Gemini CLIを起動します
  gemini

2. "Login with Google"を選択します。(エラーになる想定)

3. 改めて任意のプロンプトでGemini CLIを起動します
  gemini -p 'Hi'

4. 認証用URLが表示されるので、SSH元のブラウザで認証します

5. 認証コードが表示されるのでターミナルに入力します

以上です。良いGeminiライフを!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?