Hatena::ブログ(Diary)

つれづれなるままに

つれづれなるまま、興味のある内容を、独断と偏見で書いているブログ。
時にはパソコン、時にはバイク、趣味まるだしの今回は…

■2018.3.25 (日)

そうだメンテをしよう

気温は、まだ寒いものの15℃を超えている。

バイクは汚れていて、見るからに物悲しい。


うむ。洗車ついでにメンテしよう。


お昼過ぎから洗い始めて、3台とも終わったのが 15:00 くらい?

浮いていた点サビをスチールウールで落としたり、緩んでいたネジを締め直したりしてたら、結構時間を使った。

軍手をクロスがわりに使ってるんだけど、指で触ったネジがヌルっと動く感触はビビるね。

締め直さずにそのままだったら、走行中に落とすことになってた。

緩んでいたのはマフラーのエンジン排気側。

洗車大事。超大事。再確認。


もっとも、Magna50 のシーシーバーは、固定用ネジが 1 本どっかいってたけど。

緩んでいただけでまだ付いてたネジを増し締め。

結局、ネジは 1 本紛失、4 本緩んでいた。


考えてた作業

  • 洗車
  • ワイヤへの注油/グリスアップ
  • ヘッドライトパーツ交換
  • ブレーキフルード交換

やった作業

  • 洗車
  • ネジの増し締め(Magna50のみ)
  • ワイヤへの注油/グリスアップ(Magna50のみ)
  • ブローバイホースから水抜き(Magna50のみ)

うーん、丁寧にやれるのが自分でやるメンテの醍醐味だけど、ちょっと時間かけ過ぎたかも。

■2018.2.24 (土)

PageMonitor

ぱげもにとrって出てきてちょっとげんなりしつつ、Web サイトのページ更新確認用 Chrome 拡張プラグイン。


https://chrome.google.com/webstore/detail/page-monitor/ogeebjpdeabhncjpfhgdibjajcajepggtitle=PageMonitor]


はてなとか確認用サイトとかあったんだけど、どうにも使い勝手が自分に合わないので試してみたこちら。

うん、Chrome は毎日のように使うし、常に起動させっぱなしでもある。

これはいいかも…っていうので、ちょっとお試し。


定期的に更新を目視でチェックしてたページがあって、さすがに面倒になってきちゃったので導入。

うん、いい感じ。

■2018.2.12 (月)

Raspberry Pi 3 の CentOS 7 で Let's Encrypt

最近、やたらとグローバルIPアドレスの変更が多く、インターネットからアクセスするのが大変。

1日に3回以上とか、ISP は何を考えているんだろうか。

(いや、まぁ Global IP アドレスの静的設定オプションを 8千円で提供している以上、お金儲けなんだろうけど)


で、今使っている ieServer は、ロシアからの不正な利用対策で不安定らしく、IPアドレスを更新しても DNS に反映されない状況。

定期的に SOA を見ているけど、シリアル値がアップするのが 2 時間くらいの間隔。

キャッシュ更新時間が 180 秒でも、元データが更新されてないから意味がないよね。

翌朝には更新されているので、実質的に 1 日 1 度の更新。


ってことで、一度 ISP の IP アドレスが変更されると 1 日とか待ってなきゃいけないし、それでは Dynamic DNS のサービスとして破綻しているので他のところを検討。

といっても、それほど多くないので MyDNS を使ってみる。


こちらの更新条件としては、1週間程放置したら DNS サービス提供を停止、1か月で登録データの破棄。

でも、更新方法を見る限り、メールの確認設定で更新が出来るっぽいので、普通に使う限りは問題なさそう。


ということで早速 https://www.mydns.jp:MyDNS にアクセスしてアカウント作成。

欲しいドメイン名を登録して、アカウントを Becky! Ver2 の POP3 設定。

更新処理が行われていることを確認。


その後、Raspberry Pi で Web サービスを提供。

その Raspberry Pi に 80 と 443 を開放して、インターネット側から 80 でアクセスできることを確認。

https://letsencrypt.jp/:Lets Encrypt] を使うために、https://letsencrypt.jp/ を参照して Certbot クライアントを導入。


うがー!!


Raspberry PiCentOS 7 を導入したのが悪かったのだろう。

Raspberry Pi 用の CentOS 7 では、EPEL が使えない。

なぜなら ARM の CPU なので、リポジトリに EPEL 関連のパッケージが無い。

つまり、CentOS7 にも関わらず、以下のコマンドが使えない。


sudo yum install epel-release
sudo yum install certbot python-certbot-apache

使えないという表現をもっと正確にいうと、実行しても「そんなパッケージは無い」とか、そんな感じのメッセージがでて終わるだけ。


正攻法はあきらめて「その他の UNIX 系 OS」のやり方を参考にした。


$ cd /usr/local/src
$ sudo wget https://dl.eff.org/certbot-auto
$ sudo chmod a+x certbot-auto
$ sudo ./certbot-auto

がーっと必要な rpm がインストールされて、暗号化に必要な情報の入力のためのプロンプトが表示された。

メールアドレスとか、取得したドメインとか、入力した。

ちょっとエラーはあるけど、とりあえず SSL でアクセスできるようになったっぽい。

通信を暗号化するにはサイト設定をもう少しいじらないとダメだけど、自宅サーバで 443 ポートの通信ができるとか、ちょっと感動。

■2018.1.16 (火)

Linux mplayer の謎の挙動…

インターネットラジオを聴いていたりするのだけれど、そのためのアプリの使い方が謎だったので備忘として。


以前、Raspberry Pimplayer をインストールしてラジオを聴いていることを書いたけど、バックグラウンドで動かす方法が良く分からなくてしばらく悩んでた。


シェルスクリプトは、こんな感じ。


$ cat /mnt/nas/Radio/radio_20180109_03_ANTENA1-94.7FM.sh
#!/bin/bash

mplayer -playlist \
http://yp.shoutcast.com/sbin/tunein-station.m3u?id=1236022

で、これをコマンドラインで実行。


$ sh /mnt/nas/Radio/radio_20180109_03_ANTENA1-94.7FM.sh

と入力すれば音楽(ラジオの音声)が流れてくるのに、

$ sh /mnt/nas/Radio/radio_20180109_03_ANTENA1-94.7FM.sh &
esolving yp.shoutcast.com for AF_INET6...

Couldn't resolve name for AF_INET6: yp.shoutcast.com
Resolving yp.shoutcast.com for AF_INET...
Connecting to server yp.shoutcast.com[46.105.114.166]: 80...

Cache size set to 320 KBytes
MPlayer 1.3.0 (Debian), built with gcc-6.2.1 (C) 2000-2016 MPlayer Team


[1]+  停止                  sh /mnt/nas/Radio/radio_20180109_03_ANTENA1-94.7FM.sh

となって停止してしまう。

違いは & を付けたか、付けなかったか。

ちょっと意味がわからない。


で、いろいろなキーワードでググってたわけだけれど、このページが役に立った。


教えて! goo

mplayerのバックグラインド実行を教えてください -例えばコマンドライ- UNIX・Linux | 教えて!goo


いや、直接的にコレっていう方法じゃなかったんだけど、回答者の「なぞの挙動ですが、&がmplayerコマンドの引数として解釈されてるのかもしれません。」という一文。

その回答にあるコマンドの例文ではいろいろ小細工をしてたけど、& だけ別にさせたいならこんな感じでいけるはず。


$ $(sh /mnt/nas/Radio/radio_20180109_03_ANTENA1-94.7FM.sh) &
[1] 29398
$
Couldn't resolve name for AF_INET6: yp.shoutcast.com

Couldn't resolve name for AF_INET6: s5.voscast.com
AO: [pulse] Init failed: Connection refused
Failed to initialize audio driver 'pulse'


$

おぉ、上手くいった!

音楽が流れてきたよー!



……ん?

いま流れてるこの曲名は!?


このコマンドじゃわからーん!


……標準出力はリダイレクトすればいいよね、たぶん。

ってことで、急いでコマンドを少し修正。





$(sh /mnt/nas/Radio/radio_20180109_03_ANTENA1-94.7FM.sh >> /mnt/nas/Radio/Radio.log) &
[1] 29783
$
Couldn't resolve name for AF_INET6: yp.shoutcast.com

Couldn't resolve name for AF_INET6: s5.voscast.com
AO: [pulse] Init failed: Connection refused
Failed to initialize audio driver 'pulse'


$ grep Info /mnt/nas/Radio/Radio.log
ICY Info: StreamTitle='The Drifters - 15 Drif no Hontoni Hontoni Gokurousan';
ICY Info: StreamTitle='Arai Yumi - 09 Yasashisa ni Tsutsumareta nara';
(延々戻ってこなかったため Ctrl + C で中断)

曲名はわかった!

ドリフターズの曲にこんなのがあったのかw



とりあえず、その感動は置いといて。


うーん、、、現在の進行度が % で表示されては消えていく仕様だけにログがえらい勢いで増えていくし、コマンドの実行オプションかリダイレクト処理に、もう少し考慮が必要かぁ


とりあえず、バックグラウンドで実行できることが分かっただけで、今日は大分進展あり!

■2018.1.12 (金)

Apache2 の Basic 認証 (Debian系)

今まで、めんどくさそうで避けていた Basic 認証の設定方法を勉強してみた。

(いやぁ、遅すぎだよね……)


手順は、、、

  1. .htpasswd を作る
  2. basic 認証用設定ファイルを置く
  3. basic 認証用設定ファイルを有効にする
  4. Apache2 をリロードする。

環境は Raspberry Pi で sudo apt-get install apache2 を使ったインストール後のデフォルト環境を利用している。

(/var/www/html/ が index.html の置いてあるデフォルト)

また、ありきたりな「.htaccess」は使わない手順であることに注意。

.htpasswd を作る

Raspberry Pi で Apache2 を使うなら、基本的には全部のディレクトリへアクセスが可能だと思う。

(自分の作ったサーバにアクセス権限がないとか、ありえないよね?)

なので、次のディレクトリにパスワード用ファイルを置く。


/etc/apache2/.htpasswd


ってことで、初回のみ -c を付けてパスワードファイルを作成する。


$ cd /etc/apache2
$ sudo htpasswd -m -c .htpasswd tester
New password: 
Re-type new password: 
Adding password for user tester

オプション -m は、MD5 でのパスワード暗号化指定。

オプション -c は create のことで、指定のファイルが無い場合に作る。すでにある場合は上書きされる。


2回目以降は、こんな感じ。

$ cd /etc/apache2
$ sudo htpasswd -m .htpasswd tester2
New password: 
Re-type new password: 
Adding password for user tester2

パスワードを 2 回も入力したくなかったら -b オプションを使って、こんな感じで平文で書く。

$ cd /etc/apache2
$ sudo htpasswd -b -m .htpasswd tester3 P@ssW0rd
Adding password for user tester3

これで、Basic 認証用アカウントファイル /etc/apache2/.htpasswd を作った。

なお、P@ssW0rd というパスワードは、2017年に辞書攻撃でよく利用されたパスワードらしい。

なので、そのまま使わないこと。

basic 認証用設定ファイルを置く

つぎに、Apache2 にさっきの Basic 認証用ファイルを利用するよう設定しなければならない。


設定ファイル:/etc/apache2/conf-available/basic-auth.conf

対象ディレクトリ:/var/www/html

パスワードファイル:/etc/apache2/.htpasswd


これらを盛り込んだファイルを作る。

ファイル名やらなにやらは、自身の環境に合わせて適切に指定すること。


$ sudo vi /etc/apache2/conf-available/basic-auth.conf
(書き書き)
$ sudo cat /etc/apache2/conf-available/basic-auth.conf
<Directory /var/www/html>
	AllowOverride None
	AuthType Basic
	AuthName Documents
	AuthBasicProvider file
	AuthUserFile /etc/apache2/.htpasswd
	Require valid-user
</Directory>

この辺の書き方は、APACHE HTTP SERVER PROJECT サイトの書き方を参考にしている。

http://httpd.apache.org/docs/2.4/mod/mod_authn_core.html


あと、AllowOverride None は .htaccess を無効にする設定。

Apache2 の設定ファイルに Basic 認証設定を書いているのに、わざわざ .htaccess ファイルを読み込もうとしてパフォーマンスを落とす必要はない。


.htaccess はできるだけ使うなって、公式が言っていることだし。

http://httpd.apache.org/docs/2.4/howto/htaccess.html


basic 認証用設定ファイルを有効にする

Debian 系の仕様として、conf-available 配下に置いた設定ファイル (*.conf) は、次のコマンドで有効にしてあげないといけない。


$ sudo a2enconf basic-auth

basic-auth 部分は、basic-auth.conf の .conf より前の部分なので、もしファイル名を変えている場合は指定を適切に変更すること。

Apache2 をリロードする。

最後に、有効にした設定ファイルを反映してあげないといけないので、apache2 をリロードする。


$ sudo systemctl reload apache2

悲しいことに下記のようなエラーがでたら、どこか記入を間違えているので丹念に見直す必要あり……orz


$ sudo systemctl reload apache2
Job for apache2.service failed because the control process exited with error code.
See "systemctl status apache2.service" and "journalctl -xe" for details.

これで http://example.co.jp/ には Basic 認証でアクセスできるようになった。

https にするには、別途証明書が必要だなぁ……あう。