Ubuntu 24.04.2 LTS へ Superset をインストールする
製品販売当初は、リーズナブルだった Tableau がどんどん値上がり、さらに最小ハードウェア要件まで上昇!アップグレードもままならなくなってきましたので移行先を検討しました。
移行先の候補はいくつかあるようですが、 Superset , Redash , Metabase あたりを使ってみたいと思い、 Tableau のようにデータの可視化に強そうな Superset をインストールしたいと思います。
導入環境:
- Ubuntu 24.04 LTS
- Python 3.11
- Superset 5.0.0
Python 3.11 のインストール
早速インストールをしていきたいと思いますが、 Superset のインストールドキュメントでは Ubuntu 24.04 にデフォルトでインストールされている Pythton 3.12 を Superset がサポートしていないという事で、 Python 3.11 のインストールが必要になるそうです。
インストールを始める前にパッケージリストを更新して、インストール済みのパッケージを更新します。
$ sudo apt update
$ sudo apt upgrade
一応、導入されている Python のバージョンを確認しておきます。
$ python3 --version
Python 3.12.3
今回使用している環境には、 Python 3.12.3 が導入されていましたので Superset 用に Python 3.11 を導入していきます。
古いバージョンの Python は、Ubuntu の公式では用意されていないため PPA(Personal Package Archive) から導入することになります。
ここでは、 add-apt-repository コマンドを使用していますが、このコマンドは非推奨になっています。 add-apt-repository コマンドを使わない手順は別の覚えとして記事を作成したいと思います。
それでは、ドキュメントに従ってリポジトリを追加します。
$ sudo add-apt-repository ppa:deadsnakes/ppa
$ sudo apt update
Python 3.11 と必要なライブラリをインストールします。
sudo apt install python3.11 python3.11-dev python3.11-venv build-essential libssl-dev libffi-dev libsasl2-dev libldap2-dev default-libmysqlclient-dev
Python 仮想環境を構築
Superset のドキュメントに Python の仮想環境で構築することが推奨されています。
次のコマンドを実行し、仮想環境を構築していきます。
$ mkdir superset
$ cd superset
$ python3.11 -m venv venv
仮想環境を有効にします。
$ source venv/bin/activate
有効化すると、プロンプトの前に仮想環境名が表示されます。
(venv) hoge@fuga:~/superset$
念のため、仮想環境の Python のバージョンが 3.11 であることを確認しておきます。
(venv) hoge@fuga:~/superset$ python3 --version
Python 3.11.13
Superset をインストールする
pip で Superset をインストールします。
(venv) hoge@fuga:~/superset$ pip install apache_superset
秘密キー用の文字列を生成します。
(venv) hoge@fuga:~/superset$ openssl rand -base64 42
環境変数 SUPERSET_SECRET_KEY と FLASK_APP を設定します。
SUPERSET_SECRET_KEY には、先ほど生成した文字列を指定します。
※本番環境では、これらの環境変数を永続化しておく必要があります。
(venv) hoge@fuga:~/superset$ export SUPERSET_SECRET_KEY=YOUR-SECRET-KEY
(venv) hoge@fuga:~/superset$ export FLASK_APP=superset
次にデータベースを初期化します。
(venv) hoge@fuga:~/superset$ superset db upgrade
今回の環境では、エラーが表示されデータベースの初期化に失敗しました。
2025-08-02 04:28:21,158:INFO:superset.utils.screenshots:No PIL installation found
2025-08-02 04:28:21,405:ERROR:superset.app:Failed to create app
.....
...
TypeError: Field.__init__() got an unexpected keyword argument 'minLength'
この初期化エラーから抜け出すのがなかなか大変でした。私の環境での解決方法になりますが、 marshmallow のバージョンを確認します。
(venv) hoge@fuga:~/superset$ pip show marshmallow
Name: marshmallow
Version: 4.0.0
Summary: A lightweight library for converting complex datatypes to and from native Python datatypes.
Home-page:
Author:
Author-email: Steven Loria <sloria1@gmail.com>
License:
Location: /home/bbb/superset/venv/lib/python3.11/site-packages
Requires:
Required-by: Flask-AppBuilder, marshmallow-sqlalchemy
バージョンが 4.0.0 の場合、サポートされていないという事でしたので、 3.20.1 へダウングレードします。
(venv) hoge@fuga:~/superset$ pip install marshmallow==3.20.1
もう一度データベースの初期化を実行します。
(venv) hoge@fuga:~/superset$ superset db upgrade
2025-08-02 04:35:42,131:INFO:superset.utils.screenshots:No PIL installation found
2025-08-02 04:35:42,562:INFO:superset.utils.pdf:No PIL installation found
WARNI [alembic.env] SQLite Database support for metadata databases will be removed in a future version of Superset
・・・・・
・・・
INFO [alembic.env] Migration scripts completed. Duration: 00:00:11
今度は、成功しました。
次に Superset の管理者ユーザーを作成します。
(venv) hoge@fuga:~/superset$ superset fab create-admin
2025-08-02 04:41:22,130:INFO:superset.utils.screenshots:No PIL installation found
2025-08-02 04:41:22,559:INFO:superset.utils.pdf:No PIL installation found
Username [admin]:
User first name [admin]:
User last name [user]:
Email [admin@fab.org]:
Password:
Repeat for confirmation:
Recognized Database Authentications.
Admin User admin created.
用意されているサンプルデータをロードします。
(venv) hoge@fuga:~/superset$ superset load_examples
Superset の初期化を実行します。
(venv) hoge@fuga:~/superset$ superset init
Superset を実行します。Superset のドキュメント通りの引数の場合、ローカルホストからのみ接続が許可されるので「-h」を追加しています。
また、 8088 ポートを指定していましたので事前にファイアウォールの設定もしています。
(venv) hoge@fuga:~/superset$ superset run -h 0.0.0.0 -p 8088 --with-threads --reload --debugger
2025-08-02 14:10:39,475:INFO:superset.utils.screenshots:No PIL installation found
2025-08-02 14:10:39,890:INFO:superset.utils.pdf:No PIL installation found
* Serving Flask app 'superset'
* Debug mode: off
2025-08-02 14:10:40,500:INFO:werkzeug:WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on http://127.0.0.1:8088
* Running on http://192.168.x.x:8088
2025-08-02 14:10:40,501:INFO:werkzeug:Press CTRL+C to quit
2025-08-02 14:10:40,503:INFO:werkzeug: * Restarting with stat
2025-08-02 14:10:42,140:INFO:superset.utils.screenshots:No PIL installation found
2025-08-02 14:10:42,546:INFO:superset.utils.pdf:No PIL installation found
2025-08-02 14:10:43,119:WARNING:werkzeug: * Debugger is active!
2025-08-02 14:10:43,206:INFO:werkzeug: * Debugger PIN: 113-410-117
正しく動作していれば、ブラウザからアクセスすることで次のような画面が表示されます。
とりあえず、実行するところまではたどり着くことができました。実行時に「WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.」とありましたので、本稼働の時は WSGI server なども考慮する必要があります。今回は、ここまでとします。