ラズパイを remote.it(Weaved?)で外部公開する

# ラズパイを remote.it(Weaved?)で外部公開する

## 1.概要
Raspberry piでIoT Gatewayを開発することになったので、
Raspberry piをローカルより外側のネットワークに公開する方法を調べました。
この[サイト](https://igarashi-systems.com/sample/translation/raspberry-pi/remote/internet-access.html)よりルータの設定を変える方法とWeavedサービスなるものを適用する方法があることが分かったのですが、(ちなみに最新の[ラズパイ公式ドキュメント](https://www.raspberrypi.org/documentation/remote-access/access-over-Internet/README.md)ではWeavedの指定は消えています。)
Weavedサービスを用いた方法を紹介しているページがあまりなかったので今回実践しつつ手順をまとめます。なお、Weavedへのリンクへ飛ぶとremote.itのサイトへ飛んだので現在はremote.itに変わったみたいです。

## 2.インストール手順

本章はRaspberry piで行う手順となります。

### 2-1

https://remote.it/ にアクセスして[Sign up]からアカウントを作成します。
※記事作成終盤で気づきましたが[日本語サイト](https://remote.it/jp/)もあるみたいです。

![signup_entry.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604076/e5758832-6e4b-1274-4250-9920056bb7c7.png)

### 2-2

E-mailアドレス、passwordを入力し、ポリシーの同意にチェックを入れて[CREATE ACCOUNT]をクリックします。

![signup.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604076/23f7d363-e518-0487-07e4-190f96a8172e.png)

### 2-3

登録したE-mailアドレスにメールが届くので[Verify Email]をクリックしてアカウントを確定します。

![mail.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604076/ccb1f2c9-1b6f-c9fd-41be-3946be508aa7.png)

### 2-4

アカウントの作成に成功すると以下の画面が表示されます。
[CONTINUE →]で次に進みます。

![account_success.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604076/b7abbb86-3345-dc86-8c80-97dc56c58577.png)

### 2-5
下記画面に作成したアカウント情報を入力してログインします。

![login.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604076/06ccb4b4-3a30-f842-5825-244a63c8363b.png)

### 2-6
[DOWNLOAD]をクリックしてダウンロードの選択画面に遷移します。
今回はRaspbianの32bit環境なので下記画像の選択となります。
(ちなみにドキュメントへのリンクもあり、
日本語のドキュメントも用意されているので安心します。)

![download.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604076/2e637732-77a6-f8c1-e997-0e46d3026107.png)

### 2-7
ダウンロードが完了したらファイルを右クリックしてパッケージのインストールからインストールを実行します。

![install.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604076/c052b564-0051-27b1-b78c-1708fb5e2892.png)

## 3.設定手順

本章はRaspberry piで行う手順となります。

### 3-1

インストールが完了したらコンソールを開いて以下のコマンドを実行します。
UsernameとPasswordを聞かれるのでremote.itアカウントの情報を入力します。

> sudo remoteit signin

![signin.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604076/afd0ba05-51a5-ffda-8b17-1a2a380bf272.png)


### 3-2

signinが完了したら以下のコマンドを実行します。
Device nameの入力が求められるのでネットワーク上のデバイス名を入力します。
(今回の例では"pi"としています。)

> sudo remoteit register

![register.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604076/d4beeaf5-06fe-d554-a50d-f5ceb3525c8f.png)

### 3-3

最後に下記のコマンドを実行します。
サービスのタイプ、ポート、サービス名の入力が求められます。
(今回の例では"http","8000","ykwmt"としています。)

> sudo remoteit add

![add.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604076/ddf85d46-b5dc-4bfa-ef6f-49a43a0b5ecb.png)

## 4.動作確認

### 4-1

以下、4-3までRaspberry piで行う手順となります。

外部公開用のフォルダを作成し、
"index.html"を作成します。
(今回の例では"ykwmt_demo"としています。)

![folder.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604076/8c755f9f-4c74-8dbb-f1bc-8647cd809832.png)

### 4-2

"index.html"に以下のコードを書込みます。

```html:index.html
<!DOCTYPE html>
<html lang="jp">
<head>
    <meta charset="UTF-8">
    <title>ハロワ</title>
</head>
<BODY>
    ハロワ！！
</BODY>
</html>
```

### 4-3

コンソールを開き作成した外部公開用のフォルダに移動します。
下記のコードを実行しフォルダを公開します。
※デフォルト設定で8000番ポートが割り当てられるはずですが、
8000番以外が割り当てられる場合はサービスとポートが合うよう対処して下さい。

> python3 -m http.server --cgi

![server.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604076/49db3a28-945b-b461-f995-b5210a45656a.png)

### 4-4

以下、4-5までRaspberry pi以外のデバイス(PCやスマホ)で行う手順となります。

PCやスマホからhttps://remote.it/ にアクセスします。
サインインすると登録したラズパイが確認できます。

![portal.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604076/8ea87721-dae5-b0c3-ece4-7a8ae6286050.png)

### 4-5

Device Name("pi")をクリックしてDevice Servicesダイアログを開きます。

![device_services.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604076/0ad3187b-da9f-e306-7d94-1670601a4e6c.png)

更にService("ykwmt")をクリックしてWeb Connectionダイアログを開きます。

![webconnection.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604076/43310a5b-724a-314d-f064-bf660a0d9bac.png)

表示されたURLにウェブブラウザでアクセスすると、
"index.html"の内容が確認できます。

![helloworld.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604076/c5218085-26f8-edc0-2217-820437ed648a.png)

## 5.まとめ

以上で外部からラズパイに対してアクセスすることができました。
今回はHTTPでのアクセスでしたが、他のプロトコルも用意されていたり、
スマホで利用する為のアプリも用意されていたりとフォローが手厚いなと感じました。
あとは、公式のドキュメントページでAWSというワードがたくさん見られたので、
もしかしたらAWSと使うといいことがあるのかな？

## 6.参照

https://igarashi-systems.com/sample/translation/raspberry-pi/remote/internet-access.html

https://yamaryu0508.hatenablog.com/entry/2014/12/13/235500

https://remote.it/