ngrok で外部公開

コンテナ内のローカル WebUI(Streamlit 等)を、スマホなど外から触れるようにする型(gemini-rag の start.sh)。

  • CLI でなく pyngrok(Python)from pyngrok import ngrok を使えば ngrok CLI のインストール不要。 ngrok.set_auth_token(...)ngrok.connect(8501, bind_tls=True, auth=f"user:{pw}")bind_tls=True で https、auth="user:pass" でトンネルにBasic 認証をインライン付与(生 URL を晒さない)。
  • .env を先に展開set -a; source .env; set +aNGROK_AUTHTOKEN/NGROK_PASSWORD を環境変数に。 読み込み忘れで「authtoken 無し」で落ちるのが定番の罠。
  • 後始末:Streamlit はバックグラウンド起動(→Streamlitをコンテナ越しでserveする)、trap "kill $PID" EXITngrok.kill() で Ctrl+C 時に確実に落とす。起動前に pkill -f streamlit でポート競合も防ぐ。

出典:gemini-raggemini-rag/start.shCLAUDE.md Step 6)