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 +aでNGROK_AUTHTOKEN/NGROK_PASSWORDを環境変数に。 読み込み忘れで「authtoken 無し」で落ちるのが定番の罠。- 後始末:Streamlit はバックグラウンド起動(→Streamlitをコンテナ越しでserveする)、
trap "kill $PID" EXITとngrok.kill()で Ctrl+C 時に確実に落とす。起動前にpkill -f streamlitでポート競合も防ぐ。
出典:gemini-rag(gemini-rag/start.sh、CLAUDE.md Step 6)