2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

自分サーバーでWebPushをやってみた。

Last updated at Posted at 2022-01-21

WebPushって何?

  • Android端末とかChromeブラウザで、「通知を受け取る」にしておくと、サーバーサイドから通知をプッシュできる仕組みです。
  • これを使って、自分サーバー上に通知サイトを用意して、サーバーからのいろんな通知をスマホで受け取ろうという実験です。
  • (たとえば、サーバー障害発生などでZabbixのアラートが上がったら自分のスマホに知らせてくれる、的なものです)

さっそく実装

  • 続きは GitHub で

インストール前提条件

  • 自分サーバーはSSL有効でなければなりません。
  • Apache + PHP7 が動いているものとします。
  • Apacheの設置先ディレクトリは、説明の都合上、 /public/ とします。

インストール方法

  • (1)まず、 上記 GitHubからコードを拾ってください
  • (2)PHPのcomposer を使って、minishlink/web-push をインストールします。

$ composer require minishlink/web-push

  • (3)サイト公開鍵と秘密鍵を準備します。
  • 以下のサイトを使用して、鍵を作成したのち、
  • ---> https://web-push-codelab.glitch.me/
  • 公開鍵は mysite.js に、秘密鍵は、PushMessage.php にそれぞれ転記してください。(コメント通り)
  • (4)mysite.js と worker.js で https://example.com/ となっている行を、自分のサイトのURLに書き換えてください。
  • (5)./log/ ディレクトリのパーミッションを www-data に対して書き込み許可にしてください
    以上で設置は終わりです

動作チェック

  • https://自分のサイトのURL/public/ に、パソコンのChromeもしくはスマホからアクセスします。
  • (iPhoneは使えません)
  • 「Web通知を許可する」のリンクを踏んで、通知を許可してください。
  • 一番下の「Web通知のテスト」ボタンで、10秒後に通知が届けば成功です。

サーバー側から通知を送るには・・・

$ php PushMessage.php "送りたいメッセージテキスト"

  • で送れます。(送れるはずです)

制限事項など

  • 通知先のリスト管理は、昔懐かしいPerlで書かれたBBSのような管理方法を使っています
  • (./log/client.txt)
  • ですので、通知先となる端末数は多くても10台以内ということでお願いします。
  • セキュリティまわりのチェックをあまりやっていませんので、まさかの実運用に使われる場合は各自で対策、メンテナンスお願いします。
  • Zabbixとの連携は、次の課題ということにして先送りいたします。

参考にしたサイト

-JSとPHPでWebPushを送信するWebアプリケーションを作ってみる

上記サイトを参考にさせていただきました。ありがとうございます。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?