コンテンツへスキップ

Synology Lets Encrypt 証明書 ワイルドカードサポート

これはうれしい、証明書のワイルドカードサポート。
Synologyの管理ツールDSM(DiskStation Manager) のVersion 6.2.3で、Let's Encryptワイルドカード証明書がサポートされたようです。

一部、Synology で運用しているサイトも残っており、サブドメイン毎の証明書設定を行っておりました。

以前のSynologyでWEBサーバを設定し、証明書を行う際の記事:
Synology WEBサービス公開方法(独自ドメインサイト追加)

公式サイトより

What's New in DSM 6.2.3

11. Added support for Let's Encrypt wildcard certificates for Synology DDNS.
「Synology DDNS向けに、Let's Encrypt ワイルドカード証明書サポートを追加」

https://www.synology.com/ja-jp/releaseNote/FS6400?utm_source=eNews&utm_medium=email&utm_campaign=202005%20Monthly%20eNews%20-%20Global

 

ディープラーニング NVR DVA3219

実はニーズドンピシャの商品。
SynologyのNASにGeforceが搭載され、まさに機械学習が画像検出向けの製品です。

私自身は、Synologyがデータ保管に、情報発信。
機械学習などは、NVIDIAのJetsonやRaspberry PiとIntel NCS2を利用したシステムを組んでいるので、このNVR DVA3219がうまく利用出来れば、全てを賄うことが出来ます。

NAS + 推論マシン = NVR DVA3219

しかも、しっかりとしたGPUなので、ネットワークカメラのみをエッジデバイスとして配置し、集中したシステム管理ができそうです。

自由度が分かれ目

ライトユーザーで、そのまま監視カメラを利用するには、ハードがオーバースペックで割高を感じると思います。逆に、どこまで自由にNAS OSをユーザーに触らされるかで、新しいフレームワークなどが日々現れる人工知能などの分野のユーザーが満足出来る製品なのか、難しい部分。
やはり、ライトユーザー狙いでないと、自作系には価格にも勝てないので、私はこの製品のターゲットからずれているのかなと感じております。やはり、色々自分もカスタマイズして、機械学習などの旨味を出来る範囲で、最大限に味わいたい。

高めの価格設定

非常に面白い商品構成、今後ベアボーンなども類推デバイスとして、GPU搭載などが出てくると予想される、その火付け役となってほしいです。
まだまだ、試行錯誤の機械学習や人工知能分野、パッケージ化などはもう少し先でしょうか?やはり、プラグイン感覚で、どんどん出来ることが増えていくのでしょうか?どんなプラットフォームがデファクトとなるのでしょうか? 実は、5G+スマホだったり!?

Synology ディープラーニング Network Video Recorder DVA3219 HDD非搭載モデル【在庫目安:お取り寄せ】| カメラ ネットワークディスクレコーダー ネットワークビデオレコーダー 監視 録画 ネットワークカメラ

 

 

 

Synologyを用いたWEBサーバーへのサイト追加

前提

Synologyでドキュメントルート、外部公開設定

WEB公開するフォルダ(ドキュメントルート)作成と、登録するドメイン名を登録します。
「Web Station」の「仮想ホスト」より「作成」ボタンより、Virtual Hostの新規追加を行います。

「ドキュメントルート」設定項目の「検索する」ボタンより、表示される設定画面より「フォルダの作成」ボタンを押し、新規作成するフォルダ名を登録します。

新規サイトに Synology 無料SSL証明書導入(Let’s Encrypt)設定

「コントロールパネル」の「セキュリティ」を選択します。

「セキュリティ」画面より、「証明書タブ」を選択し、新規サイトの証明書を追加します。

固定グローバルIPの逆引き設定 GMOトクトクBB固定IPアドレス向け

グローバル固定IP向け Synology DNS サーバー構築

せっかくの固定グローバルIPアドレス、逆引き設定無料も後押しして、利用を開始した、GMOとくとくBB固定IPアドレスサービス。
設定完了しましたの以下メールを受けて、SynologyでDNS設定を行いましたが、逆引き出来ません。

実際には、以下、メールが届きました。
逆引きゾーン設定には、「SUB15.189.241.202.in-addr.arpa」をゾーン名に指定するように記載があり、1IPの逆引き設定は、プロバイダ側で逆引きIPをcnameしているのかなと興味深く見ておりました。

SUBから始まる逆引きZone名

結論から申しますと、PTR設定を見直す必要がありました。
(IPアドレスの最後).SUB--(逆引きZone名)-- のPTRレコードが必要。

固定IPアドレス、aaa.bbb.ccc.xxの逆引きゾーン名SUBxx.ccc.bbb.aaaに対して、xx.SUBxx.ccc.bbb.aaaのPTRが必要。

SUBから始まるIP逆引きゾーンファイル

最終的な、ゾーンファイルです。(Synologyよりエキスポートしました)

SUBから始まるIP逆引きのPTR設定(SynologyのDNS設定画面)

固定IPアドレス逆引きnslookup実行結果




TP-LINK TL-ER6020でのNAT構成

PPoE2セッション構成とし、NAT可能なWANポートを2つへと構成変更を行いました。
今までのネットワーク構成は、以下のようにNAT可能なPPoE接続は1セッションであったので、Synology の外部サーバー公開とRaspberry Piの外部サーバ公開は、外部向け公開ポートを分けて、アクセス/処理の振り分けを行っておりました。

ダブルWAN構成(PPoEの2セッション構成)

TP-Link の TL-ER6020は複数WANポートをサポートしているので、このような構成でのNATも簡単に設定出来ます。今回利用しておりませんが、WAN1とWAN2両方で、WEBリクエストの着信を待ち、公開サーバーへフォワードすることも可能です。

以下が、ER6020のVirtual Server(NAT)設定となります。

  • Synology ポート80(http) WAN2を利用
  • Synology ポート443(https) WAN2を利用
  • Synology ポート53(DNS) WAN2を利用
  • Raspberry Pi ポート80(http) WAN1を利用
  • Raspberry Pi ポート443(https) WAN1を利用

Synology で外部向けDNS構築

固定グローバルIP向けに自前のDNSサーバーをSynologyを用いて構築します。
実際にDNSを利用するには、以下の設定変更が必要です。

正引き:ドメイン管理会社へのDNSサーバー登録
ドメイン総合サービス【VALUE-DOMAIN】でのDNSサーバーの設定
逆引き:IP管理会社(インターネットプロバイダ)へのDNSサーバー登録
GMOインターネットへのIP逆引きの設定変更依頼

Synology へDNSサーバーをインストール

SynologyのパッケージセンターよりDNS Serverをインストールします。

DNSサーバーの設定

正引き(www.miki-ie.comよりIPアドレス)および逆引き(IPアドレスからドメイン名www.miki-ie.com)を設定します。

正引き(www.miki-ie.comよりIPアドレス)設定

教科書どおりに、nsホスト名をAレコードで設定し、CNAMEで他利用したいドメインを設定しております。
実際には、正引きはドメイン総合サービス【VALUE-DOMAIN】のDNSサーバーを用いて運用しております。可用性を考え、すぐにバックアップ回線でのインターネットからのアクセスが可能となるように。更に、固定IPでの運用ですが、SynologyのDDNSの設定は、そのままにしております。デフォルトゲートウェイなど外部IP変更時には、DNSのIPアドレス変更が行われます。

逆引き(IPアドレスからドメイン名www.miki-ie.com)設定

逆引きのゾーン名ですが、利用するIPアドレスを逆から記載し、「.in-addr.arpa.」を加えたゾーン名となります。
IPアドレスが、「202.241.190.15」の場合は、逆から記載し「15.190.241.202」+「.in-addr.arpa.」となります。

202.241.190.15 の場合、

15.190.241.202.in-addr.arpa.

がゾーン名

SynologyのDNSサーバを外部公開(NAT設定)

TP-Link TL-ER6020でのVirtual Servers(NAT)設定の例となります。SynologyのIPアドレスのポート53を公開します。

今回出てきた製品や関連サービス



SynologyのphpMyAdminセッションタイムアウト変更

phpMyAdminの設定ファイル「config.inc.php」を変更します。
具体的には、「config.inc.php」の最終行に、設定したいタイムアウト値を秒指定で登録します。
$cfg['LoginCookieValidity'] = 86400; //タイムアウト24時間と設定する場合

初期検討時のシステム構想

機械学習どころか、プログラム言語Pythonも全く初めて、Raspberry PiやWEBカメラなどインフラ関係も知識なし。

めざましじゃんけん結果

WEBからの情報などで、こんな感じにしたいと思い描いたのが以下のシステム構想。

一般的なGeForce(GeForce GTX 960)ビデオカード搭載のWindowsメインマシン(Intel Core i7-6700 CPU)で機械学習・ニューラルネットワークを用いた学習モデルの作成。作成した学習モデルをRaspberry Pi 3
Model B+ へ移動し、Raspberry Piで画像検出を実施。

Raspberry Piでの画像検出結果により、じゃんけん結果をDBへ蓄積。蓄積したDBデータより、めざましじゃんけんの結果をホームページと速報としてTwitterで公開。

当初画像認識と画像検出の違いも分かっておらず、書籍などで紹介されていた画像認識を駆使したシステムを構築しようとしておりました。画像認識を試した時点ではRaspberry Piで処理可能に感じました。
画像認識・・・対象がアップ(画像一面)になっている画像の判定を行う
画像検出・・・対象が写り込んでいる画像より、対象を画像検出する

第一は、技術習得が1番のモチベーションであった、予期しないカメラのズレなどを考えても、画像検出のほうがシステムの安定稼働を望めるので、画像検出実装へ方針転換しました。実際には、画像認識は1日で実装出来たのですが、うまく動作せず、画像認識対象部分の画像切り取りなど、決め打ちの方式しか思いつかず、そうそうに画像検出に方針転換しました。他にも転用出来る素晴らしい技術に出会えたと思います。(Darknet、YOLO、Open CV、Python、DNN、ニューラルネットワーク)

V1での妥協と実装方式

本当は、リアルタイムでの画像検出を実装する予定でした。時間指定で動作するシステムよりもテレビさえ動いていれば、じゃんけんのスタートを自動検知し、結果を漏れなく収集するシステムを構想しました。
しかし、Raspberry Piの処理速度・信頼性より断念しました。画像検出中のRaspberry Piの発熱量など。
よって、V1ではめざましじゃんけん結果の判定の画像検出は、メインのWindowsマシンで実行しております。
めざましじゃんけんのみに特化して考えると、OpenCVの画像処理を駆使すれば軽くて高速なフィルタ作成も可能かなと考えています。

V1機能一覧と実装

機能名実装
画像検出フレームワーク準備学習データ収集Raspberry PiとWEBカメラで、めざましじゃんけん実施時の画面キャプチャー取得
学習データ整理メインのWindowsマシンで実施。
LabelImgで学習したい内容のラベル登録
学習メインのWindowsマシンでDarknetを用いて実施。
システム起動TV起動Raspberry PiよりNature Remo経由で実施。
TVチャネル変更Raspberry PiよりテレビREGZAのWEB APIを用いて実施。
じゃんけん時の「青」「赤」「緑」ボタン操作もRaspberry PiよりWEB APIを用いて実施。
メインマシン起動メインマシン(Windows)の起動をRaspberry Piより実施
画像検出画像蓄積Raspberry PiのWEBカメラを用いて目覚ましテレビの画像をキャプチャー
画像移動Raspberry PiでキャプチャーしたデータをWindowsのメインマインに移動
画像検出Windowsマシンで画像検出を実施。
検出結果結果をDB登録Windowsマシンより画像検出結果をSynology NASのSQL DBへ登録
情報発信WEBコンテンツSQL DB情報よりWEBコンテンツの更新。Synologyで実施。
Twitter発信WEBコンテンツ更新と同じタイミングでTwitter発信を実施。処理はSynologyで実施。

めざましじゃんけん 画像検出システム

めざましじゃんけん結果

テレビ画像よりフジテレビ、めざましテレビ内で実施されるめざましじゃんけんの結果を蓄積します。めざましじゃんけんは、デジタル放送のコンテンツであり、B-CAS(ビーキャス)カードを用いた受信装置により、データ放送を画面表示させ、リアルタイムに参加する必要があります。番組録画しても、データ放送のコンテンツは録画することは出来ません。

  1. 環境準備(インストール)

  2. Darknet/YOLOで学習モデル準備

  3. システム実装と結果公開

  4. プログラム関連技術

本システム実装に関連した、プログラム関係のTips。

    • PHP
    • Python
  1. 【機械学習導入】ニューラルネットワークChainerフレームワーク

    • 導入方法
    • 機械学習
    • Out of Memoryへの対応
    • 学習モデルのRaspberry Piでの実行

SendGridのInbound Email Parseを利用

SendGridは、メール配信などで利用されている方は多いのかもしれませんが、メール受信トリガーにWEB API経由でPOSTしてくれるサービスも提供されているようです。メール受信時のWEB APIプッシュの実現方法を探している際に見つけました。
グローバルで、企業向けにサービスを展開されているので、サービス品質などに間違いはなさそうです。
IFTTTでメール受信をしっかりとトリガー出来ていれば本サービスを利用することも無かったかもしれませんが、利用してみてPubSubというような使い方が出来そうなのでメインで利用する予定です。一般向け製品では通知手段がメールというサービスが多いです。

SendGrid | メールを成功の原動力に。

前提条件

  • PHPが動作するWEBサーバがセットアップされている
  • WEBサーバの公開設定が終わっている

SendGridのInbound Email Parse向けPHP APIサンプル

WEBサーバーにPOST受信可能なPHPファイルを配置し、SendGridがメール受信したさいのWEBリクエストを受信するPHP APIを準備します。

以下は、サンプルとなります。受信後に実施したい処理を利用形態に合わせて実装して下さい。本ページの各種ユースケースもサンプルになると思います。ユースケース一覧 V1

  • メール受信時にDBにレコード登録(モーションセンサ感知時にメール通知用)
  • ホームセキュリティ通知をDBにレコード登録(活動ログとして)
  • 各種速報メール受信時のLINE通知など

以下サンプルコードとなります。

Inbound Email Parse WebhookのPOST情報

HEADERSThe raw headers of the email.
DKIMA string containing the verification results of any DKIM and domain keys signatures in the message.
CONTENT-IDSA string containing the number of attachments.
TOEmail recipient field, as taken from the message headers.
HTMLHTML body of email. If not set, email did not have an HTML body.
FROMEmail sender, as taken from the message headers.
SENDER_IPA string of the sender’s ip address.
SPAM_REPORTSpam Assassin’s spam report.
ENVELOPEA string containing the SMTP envelope. This will have 2 variables: to, which is a single-element array containing the address that we received the email to, and from, which is the return path for the message.
ATTACHMENTSNumber of attachments included in email.
SUBJECTEmail Subject.
SPAM_SCORESpam Assassin’s rating for whether or not this is spam.
ATTACHMENT-INFOA JSON map where the keys are named attachment{X}. Each attachment key points to a JSON object containing three fields, filenametype, and content-id. The filename field is the name of the file (if it was provided). The type field is the media type of the file. X is the total number of attachments. For example, if the number of attachments is 0, there will be no attachment files. If the number of attachments is 3, parameters attachment1, attachment2, and attachment3 will have file uploads.
CHARSETSA string containing the character sets of the fields extracted from the message.
SPFThe results of the Sender Policy Framework verification of the message sender and receiving IP address.