Raspberry Pi × remote.it でお手軽トンネル装置を構築する

# はじめに
本記事は [QiitaEngineerFesta 2022 「remote.it を使って○○に接続してみた！」](https://qiita.com/official-events/8a2ab08f6fa0f093ae39) の参加記事です。

https://qiita.com/official-campaigns/engineer-festa/2022

[前回の記事](https://qiita.com/ussvgr/items/927daaa1f315628f54e8)の結びに、

> これからの季節、お盆の帰省の際などに自宅の機器にアクセスするといった用途で導入するのもいいかもしれませんね。

と書きました。
これをいかにお手軽に実現できるかということを考え、本記事の内容に至りました。
目指す姿は、**LANケーブル(と電源ケーブル)を繋げるだけでremote.it環境を構築できる** です。

# 準備したもの
- Raspberry Pi 4B(4GB) … Ubuntuが起動できればどのモデルでもいいと思います。手元で余ってたのでコレをチョイス。
- LANケーブル
- USB Type-Cの電源
- MicroSDカード
- イメージ書き込み用のPC

remote.itのアカウントは事前に作成しておきましょう。

# Ubuntu Serverのダウンロード
[こちら](https://ubuntu.com/download/raspberry-pi)からRaspberry Pi用のUbuntu Serverのイメージをダウンロードします。
本記事を書いている時点で最新のバージョンは `22.04` です。このバージョンにて進めていきます。

# イメージの書き込み
MicroSDカードにUbuntuのイメージを書き込みます。
イメージの書き込みには、[Raspberry Pi Imager](https://www.raspberrypi.com/software/)を利用します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274613/e1cff106-e00c-c010-ed6d-70b0244b7261.png)

`OSを選ぶ` ボタンをクリックし、`カスタムイメージを使う` からダウンロードしたUbuntuのイメージファイルを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274613/0f6a9b1f-5bf2-5148-f088-7bddb8f74bbe.png)

続いて `ストレージを選ぶ` でMicroSDカードを刺したカードライターを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274613/6ed931cf-4d5c-68be-6450-2e8965713de8.png)

イメージを書き込む前に、右下の `歯車マーク `のボタンをクリックし、カスタマイズをします。
私は

- ホスト名
- SSHの有効化
- ユーザー/パスワードの設定
- ロケール設定

を行っています。
また、`終わったときにメディアを取り出す` のチェックを外しておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274613/2365d203-3403-fab8-f999-e48b240dcf6b.png)

設定が終わったらメインメニューから `書き込み` を実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274613/968fcb52-30b3-0890-5581-6da952af2dda.png)

# cloud-initの編集
起動時にremote.itをインストールするために、[cloud-init](https://cloud-init.io/) を利用します。
イメージの書き込み完了後、`system-boot`ドライブ直下の `user-data` ファイルをエディターで開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274613/5766bab4-6ca4-ae58-5896-09d96451c266.png)

[remote.it](https://ja.remote.it/) にログインし、左メニュー上部の `+` ボタンをクリック、`Linux & Raspberry Pi` を選択し、右側の `Run this command to register the device` の箇所に表示されたコマンドをコピーします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274613/62610870-cc5f-ed24-f509-64d2d43224ec.png)

`user-data` ファイル内の `runcmd` にコピーしたコマンドを追記します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274613/727acf9d-e1bf-ec9a-caa7-666beeffca97.png)

以上で準備は完了です。MicroSDカードをRaspberry Piに刺し、LANケーブルと電源を繋げ起動します。

# 動作確認
Raspberry Piを起動して数分待つと、remote.itのDeviceにRaspberry Piが追加されたことが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274613/a36d053c-c325-2a4b-699b-d6ada7d36217.png)

あとはremote.itの管理画面から適当なServiceを作れば…
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274613/f8432c55-4cf5-cd10-8354-fcfd4966322e.png)

Raspberry Piを介して、出先から自宅ネットワーク内の機器に接続できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274613/a9ac3781-67fe-87f7-fa34-ef33745fbcc3.png)

# おわりに
remote.itの公式で[remote.itPi](https://github.com/remoteit/remoteitPi)というイメージを公開しているようなのですが、昨年12月から更新が止まっているようだったのでcloud-initを利用してUbuntuベースで環境を作成してみました。
準備がとても簡単なので、帰省や旅行・出張などで長期間外出するときなどに、ささっと準備して自宅ネットワークに接続しておくと、出先からのおうちサーバーのメンテが捗りそうです。
~~帰省や旅行のときぐらい自宅のサーバーのことは忘れてもいいのでは、とか思ってはいけない。~~