Edited at

ラズパイにScreenlyとremote.itで遠隔デジタルサイネージ


はじめに

~ Remote controlled Digital signage over the internet ~

表示したい一枚絵がくるくると変わるデジタルサイネージをラズパイを使って簡単に作ってみます。

今回はラズベリーパイ(Raspberry pi)をNOOBS立ち上げ時、インターネット接続していると選択できる「Screenly」をインストールして、そのあとremote.itを追加するとインターネット越しにコントロールできるリモートデジタルサイネージが作れちゃいます。


デジタルサイネージ「Screenly」

「Screenly Open Source Edition」は機能が制限されていますが無償で気軽に使えるデジタルサイネージです。インストールも簡単。専用イメージが用意されています。


screenly


動画、写真、Webページなどを再生できます。ちょっと崩れたりすることがある?のはご愛嬌。


インターネットに接続した状態でNOOBSからラズパイ立ち上げ

インターネットに接続した状態だと選択できるイメージのメニューが増えます。

Screenlyを選択してインストールを実行します。

インストールが無事完了したら、screenlyが立ち上がってきます。

この後はPCからWeb Interfaceにアクセスできます。Screenlyの設定はそちらから、ですが今は一旦ここまで。


Screenly起動後の設定

ほぼ唯一ではあるものの、1点悩むポイントがこちら。

どうやってコマンドラインにアクセスするのか?です。

(本家にしっかり書いていますのでちゃんと読む人は悩まないでしょう)

本家はこちら → Screenly Open Source Edition

最初にWebインターフェイスからビデオを無効にし、ビデオの再生が停止したら、Ctrl + Alt + F1キーを押します。その後ユーザー名/パスワードを入力してログインします。デフォルトは変更しちゃったほうが良さそうですね。(2019/7現在以下のU/Pでログイン、公式より)


コマンドラインへのアクセス

[ctrl] + [alt] + [F1]

U: pi
P: raspberry


パスワードの変更

xxx@pi01:~ $ sudo passwd root

Enter new UNIX password: [rootの新しいパスワード]
Retype new UNIX password: [もう一回rootの新しいパスワード]
passwd: password updated successfully

xxx@pi01:~ $ sudo passwd pi
Enter new UNIX password: [piの新しいパスワード]
Retype new UNIX password: [もう一回piの新しいパスワード]
passwd: password updated successfully


SSHの有効化

細かい操作は割愛、事例はたくさんあると思います。

Interface Option > SSH あたりから有効化します。

xxx@pi01:~ $ sudo raspi-config


他設定

本家(先述のリンク先より)では以下の設定をおすすめされているようです。最後にリブートですね。

- Expand the root file system (required)

- Disable overscan (depends on your display)
- Change keyboard mapping (optional)
- Change time zone (optional, but Screenly’s scheduling uses this)
- Enable SSH (optional)
- Change password for ‘pi’ user (recommended)
- Once you’ve made all these changes, you must restart your Raspberry Pi


remote.itでネットワーク設計が不要に

remote.itを使うとラズパイをDHCPで運用してもremote.it経由であれば気にせずデバイスに乗り込めちゃいます。ポートフォワードや自宅ネットワークをインターネット側にポート公開(穴あけ)する必要もありません。

remote.itがどんなサービスかというのは、こちらの@u___skさんの記事でも紹介されています。


インターネット世界の「どこでもドア」 remote.it


加えると、インターネット接続は選びません。ラズパイが携帯電波ネットワーク(テザリングとか)にぶら下がっていてもOK。乗り込めちゃいます。


remote.itのインストール

remote.itをインストールして、管理用のWeb Interfaceと、念の為SSHにも接続しちゃいましょう。

(おそらくリブート後)remote.itをインストールします。先にremote.itアカウント作成が必要ですが「インターネット世界の「どこでもドア」 remote.it」の記事がわかりやすいです。


  • まず最新パッケージ一覧の取得

xxx@pi01:~ $ sudo apt update


  • remote.itを配置

xxx@pi01:~ $ sudo apt install connectd


  • このラズパイをremote.itデバイスとして登録するインタラクティブインストーラーを起動

xxx@pi01:~ $ sudo connectd_installer


  • 1 から、先に作ったremote.itアカウントにサインイン

********************* Sign In Menu *********************

1) Sign in to your existing remote.it account
2) Request a code for a new remote.it account
3) Enter a verification code received in e-mail
4) Exit

********************************************************

Choose a menu selection (1 - 4):
1


  • このラズパイへの「アクセス名」にわかりやすい名前をつける(例:「Screenly_pi_01」)

Enter a name for your device (e.g. my_Pi_001).

The Device Name identifies your device in the remote.it portal.
Your services will be grouped under the Device Name.

Only letters, numbers, underscore, space and dash are allowed.

Screenly_pi_01


  • リモートアクセスで利用したいサービスを登録する。1 を選択。

============================ Main Menu ============================

1) Attach/reinstall a remote.it Service to an application
2) Attach/reinstall a remote.it Service to a LAN application
3) Remove a remote.it Service from an application
4) Remove all remote.it Services, then exit
5) Exit

===================================================================
'application' is any TCP service (e.g. SSH, VNC, HTTP, etc.)
running on this device. 'LAN application' is a TCP service
running on another device on this LAN.
===================================================================
Choose a menu selection (1 - 5):
1


  • まずSSHを登録、1 を選択

*********** Protocol Selection Menu ***********

1) SSH on port 22
2) Web (HTTP) on port 80
3) Secure Web (HTTPS) on port 443
4) VNC on port 5900
5) nxWitness on port 7001
6) Samba (SMB) on port 445
7) Remote Desktop (RDP) on port 3389
8) NextCloud on port 443
9) OpenVPN on port 1194
10) Custom (TCP)
11) Return to previous menu

***********************************************

You can change the port value during install

***********************************************

Choose a menu selection (1 - 11):
1


  • SSHの標準ポート番号である22番ポートを利用するなら y。(違う場合はn、その後ポート番号入力画面)

The default port for SSH is 22.

Would you like to continue with the default port assignment? [y/n]
y


  • SSHサービスへのアクセス名を入力(例:「Screenly_pi_01-SSH」)

Enter a name for this remote.it service (e.g. ssh-Pi).

This name will be shown in your remote.it Service List.

Only letters, numbers, underscore, space and dash are allowed.

Screenly_pi_01-SSH


  • これでデバイスとSSHサービスの登録が完了、続けてScreenlyのWeb Interfaceを登録しましょう。このまま続けてもう一度 1 を選択

=========================  Installed remote.it Services  ======================

Service Name | Protocol | LAN Address | Port | Application
-------------------------------------------------------------------------------
Screenly_pi_01-SSH | SSH | localhost | 22 | OK: sshd
-------------------------------------------------------------------------------
Device Name: Screenly_pi_01 Platform: arm-linaro-pi
Hardware ID: XXXXXXXX

============================ Main Menu ============================

1) Attach/reinstall a remote.it Service to an application
2) Attach/reinstall a remote.it Service to a LAN application
3) Remove a remote.it Service from an application
4) Remove all remote.it Services, then exit
5) Exit

===================================================================
'application' is any TCP service (e.g. SSH, VNC, HTTP, etc.)
running on this device. 'LAN application' is a TCP service
running on another device on this LAN.
===================================================================
Choose a menu selection (1 - 5):
1


  • さっきと同じ手順で今度はWeb Interfaceを割り当てます。

*********** Protocol Selection Menu ***********

1) SSH on port 22
2) Web (HTTP) on port 80
3) Secure Web (HTTPS) on port 443
4) VNC on port 5900
5) nxWitness on port 7001
6) Samba (SMB) on port 445
7) Remote Desktop (RDP) on port 3389
8) NextCloud on port 443
9) OpenVPN on port 1194
10) Custom (TCP)
11) Return to previous menu

***********************************************

You can change the port value during install

***********************************************

Choose a menu selection (1 - 11):
2


  • Webを選択、デフォルトポートの80で y

The default port for Web (http) is 80.

Would you like to continue with the default port assignment? [y/n]
y


  • Web Interfaceサービスへのアクセス名を入力(例:「Screenly_pi_01-Web」)

Enter a name for this remote.it service (e.g. web-Pi). 

This name will be shown in your remote.it Service List.

Only letters, numbers, underscore, space and dash are allowed.

Screenly_pi_01-Web


  • Web Interfaceも登録完了、最後に 5 で終了

=========================  Installed remote.it Services  ======================

Service Name | Protocol | LAN Address | Port | Application
-------------------------------------------------------------------------------
Screenly_pi_01-Web | HTTP | localhost | 80 | OK: nginx: master p
Screenly_pi_01-SSH | SSH | localhost | 22 | OK: sshd
-------------------------------------------------------------------------------
Device Name: Screenly_pi_01 Platform: arm-linaro-pi
Hardware ID: XXXXXXXX

============================ Main Menu ============================

1) Attach/reinstall a remote.it Service to an application
2) Attach/reinstall a remote.it Service to a LAN application
3) Remove a remote.it Service from an application
4) Remove all remote.it Services, then exit
5) Exit

===================================================================
'application' is any TCP service (e.g. SSH, VNC, HTTP, etc.)
running on this device. 'LAN application' is a TCP service
running on another device on this LAN.
===================================================================
Choose a menu selection (1 - 5):
5

Are you sure you want to exit? [y/n]
y


安定した運用のために

念の為にcronで一日一回ぐらいリブートしておけばまあ安心かな。

設定例

xxx@pi01:~ $ sudo crontab -e

エディタ画面で以下の1行を追加

0 2 * * * /sbin/shutdown -r now

上記例は、1日1回深夜2時にリブートするのが私の人生経験上無難だったというだけです、お好みに合わせて変更してください。cronでなくとも、また編集方法なども各宗派お好みで。


Screenlyにremote.itでリモートログインしてみる

remote.itにサインインして先程登録したデバイス名を探す

無事、remote.itにデバイス(ラズパイ)が登録されていますね。デバイスの名前「Screenly_pi_01」をクリックします。

すると、そのデバイスに登録されているサービスが2つ表示されました。先程登録したSSHとWeb Interfaceですね。

Web Interfaceをクリックすると…

新しいタブが開いてつながりました!URLの部分がremote.itで払い出された一時アクセス用のリンクになっていますね。これで接続するネットワークを変更してもインターネットに繋がっていればremote.itがその所在を特定してくれます。インターネット越しでもケータイのテザリングでも大丈夫です。


ついでにこれは、つまりリモートでコントロールできるデジタルフォトフレーム

じいちゃんばあちゃんの住む実家に安いHDMIディスプレイとラズパイを置いてくる訳です。

リモートからたまに写真を入れ替えたりして近況を伝えたりします。

実家のネットワークの設計は不要、DHCPでインターネットにさえ出られればOK。

設置する場所を変更されてもたいして問題になりません。


まとめ

ラズパイは面白いですね、いろんなトライをしたくなる環境が用意されているように感じます。

ラズパイで実現できる機能をインターネットに「安全に」「簡単に」「便利に」双方向接続する方法としてremote.itはとても良い組み合わせだと思います。他の利用例も紹介したいです。

ご参考

AWSのサーバーのSSHを超!安全に使うっていう@tkhmhirocさんの例がこちら


これは魔法か?! インバウンドポートを全閉したAWSのサーバに接続する方法


リモートコントロールできるWebカメラの例


ラズパイにRPi-Cam-Web-Interfaceとremote.itで遠隔Web IPカメラ


またこんな使い方はどう?ってのがあれば教えてほしいです!