データの管理から分析まで1台のサーバー内で行える環境を整えるため、RaspberryPiにJupyterLabをインストールして、serviceとして自動起動させる環境を作りました。その過程を記事に残しておきます。
目的
RaspberryPiでJupyterLabをservice化させ、デスクトップ環境からリモートで接続できる環境を作る。 普段データ分析の勉強をしている際JupyterLabを使用しているのですが、デスクトップpcとノートpcのどちらでも同じ作業ができる環境がほしかったので、RaspberryPiでJupyterLabサーバーを立ち上げることにしました。
環境
実行環境
- RaspberryPi3
- centos-rpi3
- Python 3.6.5
- pip 18.1
- IP: 192.168.0.2
- ユーザー名: test
JupyterLabとは
JupyterLabは、Pythonのデータ分析環境として使用されてきたJupyter notebookの正式後継として、2018年にリリースされたものです。notebookに比べてインターフェースが強化されており、1つのブラウザタブ内で複数のファイルを並列に開いておくことができる点が便利になっています。

インストール
pipでJupyterLabをインストール。
実行とリモート接続許可の方法
ローカル環境で起動する場合は
とシェルで実行すれば大丈夫。 リモートからの接続を許可する場合は
で実行します。これを利用して自動化します。
JupyterLabのサービス化
serviceファイルを作成して、systemdで自動起動設定を行っていきます。
リモート接続用設定ファイル
上のリモート接続許可のコマンドをもとにserviceファイルを作成しようとしたところ、実行できなかったため、まずは.jupyterディレクトリでリモート許可の設定を書き込んでおきます。
c = get_config() | |
c.NotebookApp.ip = '*' | |
c.NotebookApp.open_browser = False | |
c.NotebookApp.port = 8888 | |
c.NotebookApp.token = 'jupyter' |
このファイルを/home/test/.jupyter/ディレクトリ内に入れておきます。
serviceファイル
service化するためのファイルを作成します。
[Unit] | |
Description=Jupyter notebook | |
[Service] | |
Type=simple | |
PIDFile=/var/run/jupyter-notebook.pid | |
ExecStart=/usr/local/python/bin/jupyter lab | |
User=test | |
Group=test | |
WorkingDirectory=/home/test | |
Restart=always | |
RestartSec=10 | |
[Install] | |
WantedBy=multi-user.target |
このファイルを/etc/systemd/system/内にコピーします。
サービス自動起動設定
先ほど設定したサービスを起動します。
サービスの自動起動を有効化します。
これによりラズパイの起動とともにJupyterLabサービスも起動するようになりました。
リモート接続確認
リモートのデスクトップ環境から、ラズパイの先ほど立ち上げたサービスへ接続します。 接続するときはブラウザから
と入力します。画像のようにJupyterLabのインターフェースが立ち上がりました。

まとめ
今回はラズパイでJupyterLabをリモート接続可能な設定で起動、サービスの自動起動設定まで行いました。 まとめると、
- jupyter_notebook_config、.jupyter内設定ファイルの作成
- jupyter.service、サービス化用のファイル作成
- サービスの起動、自動起動有効化
となります。
コメント