状態:保守中 · 担当:単独開発 · コード:公開 · 最終更新:2026-10

なぜ作ったか

自宅に GPU マシンがあり、2C4G のクラウドサーバーもあります。スクリプト、アプリ、ボットからいつでもローカルモデルを呼びたい。ただし:

  • クラウドサーバーに GPU はなく、推論できない
  • 自宅マシンは常時起動ではなく、公衆 IP も変わる
  • Ollama をそのままインターネットに公開するのは危険

llmhub の考え方は単純です。モデルは自宅、サーバーは玄関だけ。

1
2
3
4
5
6
7
呼び出し側(スクリプト / アプリ / Web / ボット)
│ OpenAI 互換 API
▼
VPS: one-api ゲートウェイ(認証 / 制限 / 使用量 / リトライ)
├─ ローカル Ollama(優先)→ ssh -R トンネル → 自宅 GPU
└─ クラウド API(自宅が落ちたら自動フォールバック)
VPS: Open WebUI(チャット UI)

設計の要点

  • 受信ポートゼロ:公開入口は Cloudflare Tunnel、自宅からサーバーへは ssh リバーストンネル。セキュリティグループをほぼ開けずに済む
  • 自動フォールバック:one-api に2チャネル。ローカル Ollama が落ちるとクラウド API に切替
  • 認証と使用量の統一:全呼び出し元が1つのゲートウェイを共有
  • 秘密情報をリポジトリに入れない:実 IP、ドメイン、鍵は gitignore。*.example テンプレートのみ公開

ハマった点

  • Ollama のデフォルトは 4K コンテキスト。コーディング Agent の長いプロンプトが切れるため OLLAMA_CONTEXT_LENGTH を上げる必要がある
  • qwen3 はデフォルトで思考内容を出力し、長いプロンプトでは1ターン5〜7分。/no_think 強制版で一桁高速化
  • 半開きのリバーストンネルがポートを占有する。sshd の Match で転送を制限し、ClientAlive を設定する

制限

  • 常時起動の VPS と安定したトンネルに依存。自宅が落ちるとクラウドにフォールバック
  • 単一ユーザー構成。マルチテナントや課金は未対応
  • ローカルモデルの品質と速度は GPU 次第。7B/8B は軽い用途向けで、最先端 API の代替ではない
  • 公開サービスには常にリスクがある。最低限、認証・制限・ログを入れること
ソースを見る