\ お問い合わせはこちら! /

【初心者向け】StreamlitをVPSでインターネット上に一般公開する方法

  • URLをコピーしました!
  • Streamlitで作ったWebアプリを公開したい!
  • Herokuが無料で使えなくなって困ってる…
  • VPSでの一般公開方法が知りたい!

Python初心者でも簡単にWebアプリが作れるStreamlit。

でも、作ったアプリをインターネット上に公開しようとすると、一気に難しく感じる方は多いのではないでしょうか。

インターネット上に公開するためには、サーバーにアプリを配置して常時起動しておく必要があります。

方法としては、例えば次のようなものがあります。

  • Streamlit Cloud
  • Vercel / Render
  • Heroku
  • 🔥 VPS(本記事で解説する方法)

本記事ではこのうち自由度が高く、学習にもおすすめなVPSを使った方法をご紹介します。

VPSでの公開手順

最初にざっくりとした手順を列挙すると、次の通りです。

  • Streamlitアプリを作成
  • VPSを契約
  • VPSサーバーにSSHでログインする
  • 必要なパッケージのインストール
  • 家計簿アプリをVPSサーバーにアップロードする
  • Streamlitアプリを起動する

ぱっと見だとやること多めに見えますが、一番重いのはVPS契約の部分だけだと思います。

それでは、順番に解説してきます。

1. Streamlitアプリを作成

まだ何を作ろうか迷っている方は、いったん以下のページの家計簿アプリを使ってみましょう。

ローカルマシンで動作確認するところまでを解説しているので、動いたらこのページに戻ってきてください。

もちろんご自身で作成したStreamlitアプリを利用いただいても構いません。

2. VPSを契約

作ったアプリを24時間インターネットに公開するには、VPSというレンタルサーバーが必要です。

VPSの有名どころは、例えば以下のようなものがあります。

値段はどれも月額1,000以下です。

今回は個人的に管理画面がわかりやすいと感じている「XServer VPS」を例に説明します。

今回はごく簡単なアプリなので、一番安い構成で契約しました。

なお、参考までに他のVPSを使う場合のスペック目安もお伝えします。

項目XServer VPS
プラン名標準サーバー(Linux系サーバー)
メモリ2GB
CPU3Core
SSD50GB
イメージUbuntu 22.04

サーバー名はデフォルト設定で大丈夫です。(vps-2025-6-8-...のようなもの)
rootパスワードは任意のものを設定します。
XServer VPSではSSH Key作成オプションがありますが、「設定しない」を選択して大丈夫です。

3. VPSサーバーにSSHでログインする

契約が完了したら、早速VPSサーバーにログインしましょう。
セキュリティを保ったまま接続できる、SSH接続でログインします。

ポートの解放

まずはXServer VPSで、SSH接続とStreamlit公開用のポートを解放しましょう。
管理画面で、以下の設定を行います。

SSH接続でログイン

ターミナルを起動して、以下のような感じで入力します。

ssh root@グローバルIPアドレス

すると、以下のような画面が返ってきます。

➜  ~ ssh root@グローバルIPアドレス
The authenticity of host 'xxx.xxx.xxx.xx (xxx.xxx.xxx.xx)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'xxx.xxx.xxx.xx' (ED25519) to the list of known hosts.
root@xxx.xxx.xxx.xx's password: 
Welcome to Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-76-generic x86_64)

# (中略)

Last login: Tue Jul 18 14:16:38 2023 from 125.4.250.93

ハイライトした部分が、コマンドの入力を求められる部分です。

5行目の部分は初回ログイン時だけ聞かれるものなので、yesを入力してEnterキーを押せば大丈夫です。

また、7行目ではVPSサーバー契約時に設定したrootパスワードを入れましょう。

4. 必要なパッケージをインストールする

VPSを契約した直後に入っているのはUbuntuのOSだけなので、Pythonの実行に必要なパッケージをインストールします。

以下のコマンドを実行しましょう。

# Ubuntuのパッケージ更新
sudo apt update
sudo apt upgrade -y

# Pythonの実行に必要なパッケージのインストール
sudo apt install -y python3 python3-pip python3-venv git ufw

何かYes, Noで答えるもので質問されたら、Enterキーを押してしまって大丈夫です。

5. 家計簿アプリをVPSサーバーにアップロードする

今回はscpコマンドを使って、ローカルマシンからVPSサーバーにアップロードします。

まずはターミナルをもう一つ起動してから、家計簿アプリが置いてあるフォルダに移動します。

# 家計簿アプリのある一つ上のフォルダに移動
cd Project

# 配下のフォルダとファイルを表示
Project ls

# lsの結果として"kakeibo-app"が表示されればOK

さらに次のコマンドを実行します。

rsync -av --exclude 'venv/' ./kakeibo-app/ root@グローバルIPアドレス:/root/kakeibo-app/

これでVPSサーバーに家計簿アプリがアップロードできます。

--exclude 'venv'をすることで、ローカルの仮想環境のライブラリ群をアップロード対象から除外できます。

6. Streamlitアプリを起動する

Streamlitは8501番ポートで公開されるので、VPSサーバーのポートを解放しておきましょう。

# Streamlitのポート番号を指定
ufw allow 8501
# SSHポートも開けておく
ufw allow 22

# 初回のみ(確認が入るので「y」)
ufw enable

これでポートが解放されて、Streamlitが外部公開されます。

VPSサーバー上で次のコマンドを実行します。

# 家計簿アプリフォルダに移動
cd ~/kakeibo-app

# 仮想環境の作成 & 仮想環境に入る
python3 -m venv venv
source venv/bin/activate

# pipのインストール & パッケージのインストール
pip install --upgrade pip
pip install streamlit pandas matplotlib

# Streamlitの起動
streamlit run app.py

ブラウザから次のURLを開くと、アプリにアクセスできるようになります。

http://グローバルIPアドレス:8501

次のような画面が表示されていれば、今回のゴールとしては完璧です!

お疲れさまでした!

今後の課題

今回は、本当に最低限の実装でインターネット上に公開することだけを考えての実装でした。

なので、正直なところ実際の実装としてはいろいろな穴があります。

今後このアプリをブラッシュアップしたり、学習を進めるためには、以下のようなことを意識すると良いかもです。

1. HTTPS化

今の状態では、HTTPとなっており暗号化がされていない平文での通信になっています。

最近のトレンドでは暗号化されているHTTPS化は必須であり、Let’s Encryptなどを使ったHTTPS化を行った方が望ましいです。(というか必須)

2. データの保存方法

練習用のアプリだったのでCSVとしてデータを保存していますが、実際にはデータベースを立てた方が良いです。

今回のような簡単なアプリではあまり関係ないですが、CSVだとパフォーマンスが劣ったり、多人数アクセスに耐えられないなどの問題があります。

また、セキュリティ面でもデータベースを組んだ方が安全性は高まるので、実運用ではデータベースを立てるべきと思います。

3. 認証まわりの設定

今回は誰でも見ることができるアプリにしましたが、実際にはログインして自分だけのページを見ることができる仕組みを作ることが多いです。

Streamlitにもログイン機能の実装もできるので、余力がある方はその実装もしてみると良いかもしれません。

4. バックグラウンド実行

今の状態ではサーバーを起動しているターミナルを落とすと、Webアプリも落ちます。

なので、ターミナルを落としても実行し続けるようにDockerやその他の方法を使ってバックグラウンド実行し続ける仕組みを実装するのも実践的です。

まとめ

Streamlitアプリを外部公開する方法を解説しました。

ざっくりとした流れを再掲します。

  • Streamlitアプリを作成
  • VPSを契約
  • VPSサーバーにSSHでログインする
  • 必要なパッケージのインストール
  • 家計簿アプリをVPSサーバーにアップロードする
  • Streamlitアプリを起動する

ほとんどの手順は簡単に完了しますし、VPSも月額で1,000円もしません。

Pythonは、Webアプリ開発に進むと稼げる単価が上がる傾向にあります。

まずは本記事にあるような簡単なアプリ実装から慣れていって、収入アップを目指していきましょう!

シェアはこちら
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

旅行が趣味のミニマリストです。
YouTubeでは「食べて飲んで帰るだけ」をテーマに『酔い旅』を投稿しています。
たまに趣味のプログラミング記事の投稿します。

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)