Skip to content

Streamlit アプリケーションをデーモン化する

先日、Streamlit-Authenticator でログイン認証フォームを作る というメモを書きました。 Streamlit 作成した Web アプリケーションを本格的に利用したい場合はデーモン化しなくなります。 そこで今回は Systemd を使って Streamlit アプリケーションをデーモン化する手順をメモしておきます。

検証環境

対象 バージョン
Ubuntu 24.04.2 LTS
Python 3.13.3
streamlit 1.45.0
streamlit-authenticator 0.4.2

デーモン化したい Streamlit アプリケーションの用意

Streamlit で作成したアプリケーションを配置するディレクトリを作成します。 今回は /opt/streamlit_demo にしました。

mkdir -p /opt/streamlit_demo
cd /opt/streamlit_demo

今回は Streamlit-Authenticator を使ったアプリケーションを想定していますので、ライブラリをインストールしておきます。

uv pip install streamlit-authenticator

あとは Streamlit アプリケーションを配置します。

デーモン化する

Streamlit アプリケーションを Systemd でデーモン化する為、ユニットファイルを作成します。 今回は以下の内容で /etc/systemd/system/streamlit_demo.service というファイルを新規作成しました。 アプリケーションは Python の仮想環境内で実行することを想定しています。

/etc/systemd/system/streamlit_demo.service
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
[Unit]
Description=Streamlit Daemonize Demo
After=network.target

[Service]
Type=simple
WorkingDirectory=/opt/streamlit_demo
ExecStart=/opt/streamlit_demo/.venv/bin/streamlit run /opt/streamlit_demo/app.py --server.port 80
Restart = on-failure

[Install]
WantedBy=multi-user.target

新規追加したユニットファイルを認識させる為、systemctl daemon-reload を実行します。

systemctl daemon-reload

systemd でサービスを自動起動設定&起動します。

systemctl enable streamlit_demo.service
systemctl start streamlit_demo.service

これでデーモン化が完了しました。 ユニットファイル中で --server.port 80 を指定している為、Web ブラウザで http://ADDRESS へアクセスすると Streamlit アプリケーションが表示されるはずです。