はじめに
趣味でゲームを開発しているのですが、昨今のAIブームに触発されて「AIと会話できるスマホアプリ」を作ってみることにしました。画面上のAIキャラクターに話しかけると、アニメーションと音声で返答してくれる——そんなサービスです。
実装としては「音声認識 → 文字起こし → AIへ送信 → 返答を3DモデルのアニメーションとVOICEVOXで音声出力」という一連の流れを無事に動かすことができました。
ところが、一つ問題が生じました。AIのトークン数に上限があるというものです。コストを抑えるためにGemini APIの無料枠を使っていたのですが、すぐにレート制限に達してしまう状況でした。
そんなある日、X(旧Twitter)で 「Qwen3-32B」 が話題になっているのを目にし、ローカルLLMへの興味が一気に高まりました。さっそくOllamaで構築してみると、意外にも簡単に動かせて、レスポンスも問題なく返ってきました。
あとは外出先でもスマホからローカルLLMにアクセスできる環境を整えるだけです。いつもならWireGuardを使うところですが、今回は以前の記事へのコメントで教えていただいた Tailscale を試してみることにしました。
前提環境
| 役割 | デバイス |
|---|---|
| ローカルLLMサーバー | 自宅PC(192.168.1.x) |
| サブネットルーター | SynologyNAS |
| クライアント | Android スマホ |
スマホにTailscaleを導入する
- Google Playで「Tailscale」を検索してインストール
- アプリを起動し、Googleアカウントでログイン
- 「デバイスを追加しますか?」というダイアログが表示されるので「追加」を選択
これだけで完了です。
SynologyNASにTailscaleを導入する
- Synologyのパッケージマネージャーから「Tailscale」を検索してインストール
- パッケージ一覧からTailscaleを起動するとブラウザが開くので、同様にログインしてデバイスを追加
ここまで完了したら、一度疎通確認をします。スマホでTermuxなどを開き、以下のコマンドを実行してください。向き先のIPは Tailscale管理画面 に表示されているSynology NASのIPアドレスです。
ping <TailscaleのNAS-IP>
pingが通れば、スマホ↔NAS間のVPN接続は成功です。
SynologyNASをサブネットルーターとして設定する
NASに直接繋がっていない、同一ローカルネットワーク上のデバイス(ローカルLLMを動かしているPCなど)にアクセスするため、NASを**サブネットルーター(Subnet Router)**として設定します。
SSHでNASに接続する
- Synology管理画面の「コントロールパネル」→「端末とSNMP」で 「SSHサービスを有効化する」 にチェック
- 同一ネットワーク上のPCからSSH接続
ssh <NASのアカウント名>@<NASのローカルIP> -p <ポート番号>
# 例: ssh tarou@192.168.0.20 -p 22(スクショでは50022)
サブネットルーターを有効化する
SSH接続後、以下のコマンドを実行します。
sudo tailscale up --advertise-routes=192.168.1.0/24 --advertise-exit-node
--advertise-routes の箇所は、アクセスしたいデバイスが属するサブネット(192.168.0.0/24 や 192.168.1.0/24 など)に合わせて変更してください。
--advertise-exit-node は、スマホ等からのインターネット通信を自宅のIPアドレス経由にしたい場合に追加します。「自宅のローカルLLMにアクセスしたいだけ」であれば、このオプションは不要です。
エラーが出た場合
以下のようなエラーが表示された場合は、いったんリセットして再実行してください。
Error: changing settings via 'tailscale up' requires mentioning all
non-default flags. To proceed, either re-run your command with --reset or ...
# リセット
sudo tailscale up --reset
# 再実行
sudo tailscale up --advertise-routes=192.168.1.0/24
SSHを無効化する
設定完了後は、セキュリティのためSSHを無効化しておきます。
exit
Synology管理画面に戻り、「SSHサービスを有効化する」のチェックを外す。
Tailscale管理コンソールでサブネットを承認する
Tailscale管理画面 でSynology NASの項目に subnet と表示されているはずです。
- NASの行の左メニューから 「Edit route settings...」 を選択
- advertiseしたIPアドレスのチェックボックスをオンにして保存
動作確認
- スマホのWi-Fiをオフにして、モバイルデータ通信に切り替える
- TailscaleアプリからVPN接続をオン
- 以下のようなコマンドでローカルIP(Tailscale未接続のデバイス)に接続できれば成功
ssh <ユーザー名>@192.168.x.x
まとめ
Tailscaleを使うことで、以下のメリットが得られました。
- ポート開放が不要でセキュアに外部アクセスができる
- WebGUIとスマホアプリがあり、設定が直感的でわかりやすい
- WireGuardと比較して、導入・設定の手間が大幅に少ない
ローカルLLMを外出先から使いたい方や、自宅のNASに安全にリモートアクセスしたい方に、Tailscaleはとてもおすすめです。








