Zenn
🥧

TROCCO® Self-Hosted Runnerのラズベリーパイ包み

に公開

はじめに

人はなぜRaspberry Piでなんでも動かしたがるのか…

2025/03現在、クラウドETL「TROCCO®」では、任意の環境でデータ転送処理を完結できる、「Self-Hosted Runner」機能の開発が進められています。
先日、β版としてトライアルの受付が始まったので、中の人特権を使ってRaspberry Pi 3 model B[1]で動かしてみました。

Self-Hosted Runner自体の説明やアーキテクチャの説明等は下記の記事をご覧ください。

https://qiita.com/SoySoySoyB/items/d3e32b3e3a627f94ca5e

https://zenn.dev/primenumber/articles/trocco-self-hosted-runner-fargate

このように、すでにWindowsやAWS Fargateでの構築例がありますが、本記事ではよりコンパクトで電力効率に優れたRaspberry Piでの構築方法を紹介します。わずか10W程度の電力で24時間365日稼働するETL環境を実現できるのが最大の特徴です。

この記事で得られるかもしれないもの

などと言いつつ、実際のユースケースとしてはTROCCO®(以降は®を省略します)のSelf-Hosted RunnerをRaspberry Piで動かすことはおそらくないと思いますが、Raspberry Piで動くという事実から以下の洞察が得られます。

  • Self-Hosted Runnerは低リソースで動かせる
    • Raspberry Pi 3 model BはCPU 4 Core, Memory 1GB
  • Self-Hosted RunnerはARMアーキテクチャにも対応している
    • Raspberry Pi 3 model BのCPUは64-bit ARMv8アーキテクチャ
  • IoTやエッジコンピューティングなどの文脈で物理的に近い環境でETLができる可能性

用意したもの (家にあったもの)

  • Raspberry Pi 3 model B
  • 32GBのmicroSDカード
  • 適当なMicro USB Type-Bに充電できるUSBケーブル
  • USB Type-C ハブ
  • USB SDカードリーダー

構築した手順

実際に行った作業を、以下の流れで説明していきますが、N番煎じのネタが多いので大いに外部リンクの参照を活用します。

  1. Raspberry Pi OSイメージの作成
  2. (ネットワークの設定)
  3. Dockerおよび必要なツールのセットアップ
  4. TROCCO Self-Hosted Runnerの設定と起動
  5. 動作確認

1. Raspberry Pi OSイメージの作成

公式ページの通りにやります。 Raspberry Pi Imager を利用しました。

https://www.raspberrypi.com/documentation/computers/getting-started.html#raspberry-pi-imager

昔は意外とここが大変だった記憶があるんですが、日本語化もされているし何ならイメージ上の設定も焼くときにできるしかなり快適になっている印象です。公式ドキュメントもめちゃくちゃスクショがありわかりやすい。

OSは Raspberry Pi OS Lite (64-bit) を選択しました。ただでさえ少ないリソースをGUIにくれてやる余裕はないのと、そもそも使わないからです。


Raspberry Pi Imager

このあとの画面でuser/passの設定やWi-Fiの設定、タイムゾーンやキーボードのレイアウト、SSHの有効化等を設定します。

想定通りであれば、あとはラズパイに挿して、arpとかでそれっぽいの探してSSHして、、という感じで直接ラズパイにデバイスを接続しての操作はいらない想定だったのですが、ネットワークに繋がらなかったので実際に接続してトラブルシューティングしました。

2. (ネットワークの設定)

普通にモニターにHDMIで繋げばいいんですが、せっかくなので家に転がってるキャプチャーボードを使ってiPad miniをモニターとして使うやつをやりました。以下のアイテムを召喚します。

  • iPad mini gen 6
  • キャプチャーボード
  • HDMIケーブル x2
  • 外付けキーボード


見た目はこんな感じで全然スマートではないしリビングで遊んでいたので散らかっている

ちなみに、やってみた所感としては遅延がひどく、常用したいものではありませんでした😇

なお、ネットワークの設定としては、イメージ作成時のWi-Fiのパスワードをミスってたので再設定しました。
以下の手順のとおり、 raspi-config を実行し System options -> Wireless LAN から設定しました。

https://www.raspberrypi.com/documentation/computers/configuration.html

3. Dockerおよび必要なツールのセットアップ

手元のPCからSSHできるようになったのでセットアップに移ります。
Self-Hosted Runnerに必要なのはDockerのみ!なので実質Dockerだけ入れれば完了です。
以下を参考にconvenience scriptの実行で済ませました。

https://docs.docker.com/engine/install/debian/#install-using-the-convenience-script

sudo apt update
sudo apt upgrade
sudo apt install ca-certificates curl
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh ./get-docker.sh --dry-run
sudo sh get-docker.sh

4. TROCCO Self-Hosted Runnerの設定と起動

設定手順は…お二人の素晴らしい説明を見てもらえればと思います。

https://qiita.com/SoySoySoyB/items/d3e32b3e3a627f94ca5e#self-hosted-runnerを動かしてみる

https://zenn.dev/primenumber/articles/trocco-self-hosted-runner-fargate#self-hosted-runnerを動かす

ということで、できあがったのがこちらです。


TROCCO上にRunnerの登録ができている図


ラズパイ上でRunnerが動いている図

ちなみに、通信速度が遅い[2]というのもありますが、リソースの少なさもありimage pull完了まではローカルPCでやるよりは時間がかかった、というのは書き残しておきます。

5. 動作確認

今回は、「Zennの記事を最新のものから順に取得するAPIをページネーションで2回叩いた結果をBigQueryに送信する」という転送を試してみました。


先ほどと同じRunner ID(#97)で動いていることが確認できます

と、動かすだけだと芸がないので、普通にTROCCOで同じ設定で動かすのと3回ずつ実行した速度比較をしてみましょう。
ただし、通信速度やコンピュートリソース量が違うため、純粋な比較ではなくあくまで参考情報である点に注意してください(ここだけ見て「Self-Hosted Runner遅いやんけ!」とならないでください🐈)。

ラズパイ 通常の転送ジョブ実行
1回目 1:30 0:37
2回目 1:23 0:35
3回目 1:28 0:34

また、今回は実行時間だけ比較していますが、KuberbetesのPod起動のオーバーヘッドがない分、理論上起動までの時間は短くなるはずです。

実行時のリソース利用率はこんな感じでした。こちらも参考までに。

tk3fftk@raspberrypi:~ $ vmstat -t 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- -----timestamp-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st                 JST
 1  0   2560 546340   1420 254756    0    0    85     8 2646  129  5  1 93  1  0 2025-03-19 01:16:06
 1  0   2560 546340   1420 254756    0    0     0     0 10228  277  0  0 100  0  0 2025-03-19 01:16:11
 3  0   2560 546340   1420 254756    0    0  2001     0 11100 1648 11  2 84  3  0 2025-03-19 01:16:16 # ジョブ実行開始
 2  0   2560 546340   1420 254756    0    0  4766    18 11262 1598 26  3 69  2  0 2025-03-19 01:16:21
 2  0   2560 546340   1420 254756    0    0  1036    26 11090 1172 30  2 67  1  0 2025-03-19 01:16:26
 3  0   2560 546340   1420 254756    0    0   222    14 11507 1651 44  1 55  0  0 2025-03-19 01:16:31
 5  0   2560 546340   1420 254756    0    0   248    11 11550 2000 47  2 51  0  0 2025-03-19 01:16:36
 2  0   2560 546340   1420 254756    0    0   203    27 11455 1596 47  2 50  1  0 2025-03-19 01:16:41
 2  0   2560 546340   1420 254756    0    0  1489   818 11030 1099 29  2 67  2  0 2025-03-19 01:16:46
 2  0   2560 546340   1420 254756    0    0   678   298 10918  834 32  1 66  1  0 2025-03-19 01:16:51
 3  0   2560 546340   1420 254756    0    0   293     8 11100  920 42  1 56  0  0 2025-03-19 01:16:56
 3  0   2560 546340   1420 254756    2    0   992     1 11286 1344 33  2 64  2  0 2025-03-19 01:17:01
 2  0   2560 546340   1420 254756    0    0   662     9 11219 1131 41  1 57  1  0 2025-03-19 01:17:06
 4  0   2560 546340   1420 254756    0 5386   225  5390 11686 2338 27  2 64  8  0 2025-03-19 01:17:11
 1  0   2560 546340   1420 254756    0    0     4     6 11485 1888 26  2 73  0  0 2025-03-19 01:17:16
 1  0   2560 546340   1420 254756    0    0     0    23 10199  255  0  0 100  0  0 2025-03-19 01:17:21
 5  0   2560 546340   1420 254756    0    0     0     0 10433  462  5  2 93  0  0 2025-03-19 01:17:26
 1  0   2560 546340   1420 254756    0    0    53     0 10845  920 15  1 84  0  0 2025-03-19 01:17:31
 1  0   2560 546340   1420 254756    0    0     0    34 10219  260  0  0 100  0  0 2025-03-19 01:17:36
 1  0   2560 546340   1420 254756    0    0     0     7 10612  722  6  1 93  0  0 2025-03-19 01:17:41 # ジョブ終了
 1  0   2560 546340   1420 254756    0    0     0    12 10213  248  0  0 100  0  0 2025-03-19 01:17:46
 1  0   2560 546340   1420 254756    0    0     0     2 10241  280  0  0 100  0  0 2025-03-19 01:17:51
 2  0   2560 546340   1420 254756    0    0     1     6 10227  254  0  0 100  0  0 2025-03-19 01:17:56

おわりに

TROCCO Self-Hosted Runnerのラズベリーパイ包みをお届けしました🧑‍🍳
トライアルも受け付けておりますので、美味しそう!と思った方はラズパイはついてきませんが、サービスページからお問合せください。

--

脚注
  1. その昔、おうちKubernetesのラズベリーパイ包みとして稼働していたものを引っ張り出してきたという低予算企画です。 ↩︎

  2. Raspberry Pi 3 model BはWi-Fiが2.4GHz帯にしか対応していないのです。 ↩︎

株式会社primeNumber

Discussion

ログインするとコメントできます