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 ポートの通信ができるとか、ちょっと感動。

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



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


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


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

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 を使うなら、基本的には全部のディレクトリへアクセスが可能だと思う。
(自分の作ったサーバにアクセス権限がないとか、ありえないよね?)
また .htpasswd ファイルを置く場所は、.htpasswd を利用するプロセスはアクセスできて、外部からアクセスできなければどこでも良い。
なので、自分としては次のディレクトリにパスワード用ファイルを置く。


/etc/apache2/.htpasswd


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

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


もちろん、パスワードは2回とも同じものを入力する。
オプション -m は、MD5 でのパスワード暗号化指定。
オプション -c は create のことで、指定のファイルが無い場合に作る。すでにある場合は上書きされる。


2回目以降(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 より前の部分なので、もしファイル名を変えている場合は指定を適切に変更すること。
sudo a2enconf と実行して、表示された有効な設定ファイル名を手入力しても良い。
a2enconf は apache2 eneble config と覚えると、a2enmod や a2ensite というコマンドも覚えやすい。

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 にするには、別途証明書が必要だなぁ……あう。



追記しておく。
手順は記載していなかったけど Raspberry Pi で作った Web サーバに、上記のドメインでアクセスするには DNS 登録が別途必要。
また、http://example.co.jp/https://example.co.jp/ としてアクセスするには、DNS に登録したドメイン名で証明書を取得して、設定を追加する必要がある。
そして IP アドレスや Dynamic DNS では ssl 証明書を取れない。
自分みたいに趣味の延長として家庭で Web サーバを作っている場合、きちんとやろうと思ったら、ドメイン登録費用と証明書取得費用がかかってくる。
他に、いわゆるオレオレ認証局をつくって自己証明書を発行しても似たようなことができることは分かっているんだけど、root 証明書のインストールとか、本来必要ない手順がたくさん必要になってくるのでめんどくさがりな自分としてはちょっと手を出したくない。
……こうして宿題が溜まっていくんだけどね。

インターネットラジオ接続

この間、秋月電子へ行ったときに、Raspberry Pi 等と一緒にヘッドホンアンプキットを購入してきた。
http://akizukidenshi.com/catalog/g/gK-12309/


自分でハンダを使って組み立ててみた。


で、自宅にあった 100 円ショップのミニスピーカーを Raspberry Pi に接続。
なにか音源は……と思って、思いつきで Raspberry Pi からインターネットラジオに接続。
接続先は、適当にググって見つけたサイト。

$ sudo apt-get update
$ sudo apt-get install mplayer
$ mplayer -playlist http://yp.shoutcast.com/sbin/tunein-station.m3u?id=1236022


うん、アンプの有り/無しで結構違うもんだね。
しばらく放置してたら、いつの間にかエラーを吐いて停止してた。


……ん、なんだ?
と思って、今日は耐久テストをしてみた。
朝、アプリを起動して、帰宅しても、まだ局は流れてた。
次のような曲を、延々と流していたらしい。

ICY Info: StreamTitle='Koizumi Kyoko - 03 Yasashii Ame';
ICY Info: StreamTitle='Kuboh Ruriko - 06 reduce';
ICY Info: StreamTitle='Kado Asami - 12 Blue';
ICY Info: StreamTitle='ZARD - 04 Makenaide';
ICY Info: StreamTitle='Matsutouya Yumi - 15 Navigator';
ICY Info: StreamTitle='Amuro Namie - 06 How to be a Girl';
ICY Info: StreamTitle='Ota Hiromi - 01 Kimi to Aruita Seishun';
ICY Info: StreamTitle='Agata Morio - 12 Haru no Arashi no Yoru no Tejinashi';
ICY Info: StreamTitle='Ushirogami Hikaretai - 10 Shiokaze no Maigo';
ICY Info: StreamTitle='Nagabuchi Tsuyoshi - 08 Gyakuryu';
ICY Info: StreamTitle='BORO - 08 Osaka de Umareta Onna';
ICY Info: StreamTitle='Makihara Noriyuki - 01 NG';
ICY Info: StreamTitle='Kahara Tomomi - 08 Tanoshiku Tanoshiku Yasashikune';
ICY Info: StreamTitle='Hysteric Blue - 01 Rush';
ICY Info: StreamTitle='Kai Band - 10 Beautiful Energy';
ICY Info: StreamTitle='GODIEGO - 09 THREE YEARS OF LOVE';
ICY Info: StreamTitle='FUKUMIMI - 01 Hoshinokakera wo Sagashini Ikou Again';
ICY Info: StreamTitle='Fukuyama Masaharu - 06 MELODY';
ICY Info: StreamTitle='Ohguro Maki - 05 Unballance';
ICY Info: StreamTitle='Makihara Noriyuki - 14 Hungry Spider';
ICY Info: StreamTitle='Go Hiromi - 16 Ienaiyo';
ICY Info: StreamTitle='Baisho Chieko - 09 Wasurenagusa wo Anata ni';
ICY Info: StreamTitle='Matsu Takako - 05 Sakura Fuwari';
ICY Info: StreamTitle='Sera Masanori and TWIST - 07 Love Song please listen to my son';
ICY Info: StreamTitle='Kurata Mariko - 12 Kanashimi no Poesia';
ICY Info: StreamTitle='Nagai Ryuun - 08 Yomigaeru Natsu';
ICY Info: StreamTitle='Koshi Miharu - 11 Ave Maria';
ICY Info: StreamTitle='Kaientai - 03 Seien';
ICY Info: StreamTitle='TWO MIX - 02 RHYTHM GENERATION';
ICY Info: StreamTitle='DEEN - 04 Konomama Kimidake wo Ubaisaritai';
ICY Info: StreamTitle='Southern All Stars - 14 Kibou no Wadachi';
ICY Info: StreamTitle='Tahara Toshihiko - 07 Kakko Tsukanaine';
ICY Info: StreamTitle='Kurata Mariko - 13 Canaria';
ICY Info: StreamTitle='HOUND DOG - 14 BRIDGE Ano Hashi wo Watarutoki';
ICY Info: StreamTitle='Suzuki Kiyomi - 01 TAXI';
ICY Info: StreamTitle='KANAE - 05 Kono Hoshi ga Haterumade';
ICY Info: StreamTitle='Morning Musume - 08 Memory Seishun no Hikari';
ICY Info: StreamTitle='Takeuchi Mariya - 04 Ichigo no Yuuwaku';
ICY Info: StreamTitle='CHAGE and ASKA - 10 MOON LIGHT BLUES';
ICY Info: StreamTitle='H2O - 04 Loreley';
ICY Info: StreamTitle='Billy Banban - 21 YOKOHAMA ni Kane ga naru';
ICY Info: StreamTitle='NSP - 13 Chante no Machi';
ICY Info: StreamTitle='THE BOOM - 01 Kimiwa TVkko';
ICY Info: StreamTitle='Sakagami Jiro - 03 Gakkou no Sensei';
ICY Info: StreamTitle='hitomi - 08 there is';
ICY Info: StreamTitle='Takeuchi Mariya - 05 September';
ICY Info: StreamTitle='Nagabuchi Tsuyoshi - 13 Yoimachigusa';
ICY Info: StreamTitle='Matsutouya Yumi - 12 Yukidayori';
ICY Info: StreamTitle='Koizumi Kyoko - 03 Hitori Machikado';
ICY Info: StreamTitle='Takano Hiroshi - 15 Besten Dank';
ICY Info: StreamTitle='Minami Saori - 09 Tomodachi';
ICY Info: StreamTitle='Off Course - 02 Bokura no Jidai';
ICY Info: StreamTitle='globe - 14 Perfume of love';
ICY Info: StreamTitle='Sano Motoharu - 06 Glass no Generation';
ICY Info: StreamTitle='Ohashi Junko - 16 LOST LOVE Ai no Odoriba';
ICY Info: StreamTitle='Kawashima Eigo - 15 Tabi no Tojyo';
ICY Info: StreamTitle='Koyama Takuji - 12 Blind Love';
ICY Info: StreamTitle='Inaba Akira - 06 Wakatte Kudasai';
ICY Info: StreamTitle='Hamada Shogo - 01 Kaze wo Kanjite';
ICY Info: StreamTitle='TUBE - 08 Ah Natsuyasumi';
ICY Info: StreamTitle='Anzen Chitai - 07 Juliet';
ICY Info: StreamTitle='Hirosue Ryoko - 06 Ashita e';
ICY Info: StreamTitle='TMN - 08 Love Train';
ICY Info: StreamTitle='Tagawa Yosuke - 14 Lui Lui';
ICY Info: StreamTitle='Katahira Nagisa - 12 Jyunai';
ICY Info: StreamTitle='Moriguchi Hiroko - 05 Motto Umaku Suki to Ietanara';
ICY Info: StreamTitle='The Lilies - 14 Hatsukoi Slalom';
ICY Info: StreamTitle='Hashidanorihiko to Climax - 04 Hanayome';
ICY Info: StreamTitle='CHECKERS - 14 Room';
ICY Info: StreamTitle='Iwai Sayuri - 09 Koi no American Patrol';
ICY Info: StreamTitle='Ota Hiromi - 07 Virgin kara Hajimeyou';
ICY Info: StreamTitle='Sawada Kenji - 06 YAMATO yori Ai wo Komete';
ICY Info: StreamTitle='CHA CHA - 09 Beginning';
ICY Info: StreamTitle='Fukuyama Kenzo - 09 Ai wo Kureyo';
ICY Info: StreamTitle='SHIBUGAKITAI - 12 Hangyaku no Agitation';
ICY Info: StreamTitle='TRF - 10 Overnight Sensation Jidai wa Anata ni Yudaneteru';
ICY Info: StreamTitle='GODIEGO - 07 PORTPIA English Version';
ICY Info: StreamTitle='Kaientai - 10 Hito to Shite';
ICY Info: StreamTitle='Sano Motoharu - 06 Boku wa Otana ni Natta';
ICY Info: StreamTitle='Ken Naoko - 11 REVIVAL';
ICY Info: StreamTitle='access - 01 VIRGIN EMOTION';
ICY Info: StreamTitle='Suita Asuka - 03 Futari wa Magic';
ICY Info: StreamTitle='Kusunose Seishiro - 02 Takarajima TREASURE ISLAND';
ICY Info: StreamTitle='ZIGGY - 05 GLORIA';
ICY Info: StreamTitle='Yamashita Tatsuro - 02 Sprinkler';
ICY Info: StreamTitle='Iwamura Minoru - 13 Kaasan no Meinichi';
ICY Info: StreamTitle='MOON CHILD - 11 Hallelujah in the snow';
ICY Info: StreamTitle='Ishikawa Hidemi - 01 Yousei Jidai';
ICY Info: StreamTitle='Naito Yasuko - 18 Single Again';
ICY Info: StreamTitle='20th Century - 2-09 You ll Be In My Heart';
ICY Info: StreamTitle='Oda Kazumasa - 08 Itsuka Dokokade';
ICY Info: StreamTitle='Kinouchi Midori - 13 Yokohama Eleven';
ICY Info: StreamTitle='Oda Kazumasa - 14 Toi Umibe';
ICY Info: StreamTitle='Oda Kazumasa - 07 Anata wo Mitsumete';
ICY Info: StreamTitle='Itsuwa Mayumi - 06 Dakishimete Ai wa Yume no Youni';
ICY Info: StreamTitle='Kisugi Takao - 05 Kibun wa Gyaku Kousen';
ICY Info: StreamTitle='Miku Reika - 12 Umi to Anata no Monogatari';
ICY Info: StreamTitle='Ohashi Junko - 11 Moetsukite';
ICY Info: StreamTitle='Iwasaki Hiromi - 17 Saisho no Koibitotachi';
ICY Info: StreamTitle='Terao Akira - 13 Sabaku';
ICY Info: StreamTitle='Han Bun Jak - 06 Anata ga Nikumenai';
ICY Info: StreamTitle='HOUND DOG - 05 Across The Rainbow';
ICY Info: StreamTitle='Fujii Fumiya - 12 Go the Distance';
ICY Info: StreamTitle='Matsuyama Chiharu - 14 Ohinaru Ai yo Yume yo';
ICY Info: StreamTitle='Murashita Kozo - 11 Kinjirareta Asobi';
ICY Info: StreamTitle='CCB - 10 Dakishimetai';
ICY Info: StreamTitle='Sakai Noriko - 13 Chouchou';
ICY Info: StreamTitle='Kaze - 15 Yoru no Kokudou';
ICY Info: StreamTitle='Banba Hirofumi - 13 Sokutatsu';
ICY Info: StreamTitle='Kuroyume - 11 For Dear';
ICY Info: StreamTitle='Hirose Kohmi - 09 Pianissimo';
ICY Info: StreamTitle='Da Capo - 07 Moeru Nikki';
ICY Info: StreamTitle='Tokunaga Hideaki - 06 Kagayakinagara';
ICY Info: StreamTitle='Anzen Chitai - 03 On My Way';
ICY Info: StreamTitle='Aikawa Nanase - 03 LIKE A HARD RAIN';
ICY Info: StreamTitle='Fukinotou - 05 Giniro no Sekai';
ICY Info: StreamTitle='Banba Hirofumi - 18 Tasogare Monogatari';
ICY Info: StreamTitle='Ann Lewis - 12 Tenshi yo Kokyo wo Miyo';
ICY Info: StreamTitle='Suzuki Masayuki - 07 Glass Goshi ni Kieta Natsu';
ICY Info: StreamTitle='Grape - 10 Egao Doufuu';
ICY Info: StreamTitle='Nakamori Akina - 07 AL MAUJ';
ICY Info: StreamTitle='Inoue Yosui - 13 Make up Shadow';
ICY Info: StreamTitle='Alice - 07 Saraba Seishun no Toki';
ICY Info: StreamTitle='CCB - 13 Love Is Magic';
ICY Info: StreamTitle='Komekome Club - 02 Roman Hikou';
ICY Info: StreamTitle='globe - 10 FREEDOM';
ICY Info: StreamTitle='Ishikawa Yuko - 14 Cinderella Summer';
ICY Info: StreamTitle='TM NETWORK - 02 SEVEN DAYS WAR';
ICY Info: StreamTitle='Fubuki Jun - 13 Futari no Hodo';
ICY Info: StreamTitle='PRINCESS PRINCESS - 03 GET CRAZY';
ICY Info: StreamTitle='Loudness - 01 Speed';
ICY Info: StreamTitle='Imai Miki - 09 Bluebird';
ICY Info: StreamTitle='Fukuyama Masaharu - 10 Marcy s Song';
ICY Info: StreamTitle='Koshi Miharu - 17 Nobara';
ICY Info: StreamTitle='Kai Band - 19 LADY';
ICY Info: StreamTitle='Ohashi Junko - 17 Natsu Onna Sonia';
ICY Info: StreamTitle='Sakurada Junko - 12 Hatachi ni Nareba';
ICY Info: StreamTitle='Carmen Maki and OZ - 12 Love Song wo Utau Mae ni';
ICY Info: StreamTitle='Kikuchi Momoko - 12 Ivory Coast';
ICY Info: StreamTitle='Kudou Shizuka - 01 Kuchibiru kara Biyaku';
ICY Info: StreamTitle='Matsuyama Chiharu - 05 Nagai Yoru';
ICY Info: StreamTitle='JUDY AND MARY - 05 BLUE TEARS';
ICY Info: StreamTitle='Marilyn - 21 LOVE ME';
ICY Info: StreamTitle='Suzuki Ippei - 07 Michi';
ICY Info: StreamTitle='TULIP - 15 Futari ga Tsukutta Fuukei';
ICY Info: StreamTitle='Okazaki Yuki - 15 Jamican Affair';
ICY Info: StreamTitle='Yamaguchi Momoe - 03 Bi Silent';
ICY Info: StreamTitle='Fukuyama Masaharu - 01 Tsuioku no Ame no Naka';
ICY Info: StreamTitle='Okada Yukiko - 03 Little Princess';
ICY Info: StreamTitle='GODIEGO - 03 Gandhara English Version';
ICY Info: StreamTitle='Kaguyahime - 05 Ima wa Chigau Kisetsu';
ICY Info: StreamTitle='Sawada Kenji - 08 Kikenna Futari';
ICY Info: StreamTitle='Finger 5 - 10 Kojin Jugyou';
ICY Info: StreamTitle='Takahashi Mariko - 06 Tomadoi Serenade';
ICY Info: StreamTitle='Suzuki Ippei - 03 Tsuishin';
ICY Info: StreamTitle='Zuutorubi - 11 Mikan Iro no Koi';
ICY Info: StreamTitle='RAZZ MA TAZZ - 08 MERRY GO ROUND';
ICY Info: StreamTitle='Kusunose Seishiro - 12 Hottokenaiyo';
ICY Info: StreamTitle='Iwaki Tokue - 08 Dynamite';
ICY Info: StreamTitle='PENECILLIN - 12 NICE IN LIP plus L';
ICY Info: StreamTitle='Takada Mizue - 10 Mayonaka no Guitter';
ICY Info: StreamTitle='Fayray - 09 Taiyo no Gravity';
ICY Info: StreamTitle='Ohashi Junko - 05 Mr Smile';
ICY Info: StreamTitle='Nishida Hikaru - 11 Ikiterutte Subarashii';
ICY Info: StreamTitle='SMAP - 07 Peace';
ICY Info: StreamTitle='Nakamura Azusa - 14 Doyoubi wa Oshare shite';
ICY Info: StreamTitle='Nakamori Akina - 03 Twilight Yuugure Dayori';
ICY Info: StreamTitle='Takada Mizue - 04 Sonna Hiroshi ni Damasarete';
ICY Info: StreamTitle='TUBE - 11 Season in the Sun';
ICY Info: StreamTitle='Taniyama Hiroko - 01 Tenpura Sunrise';
ICY Info: StreamTitle='Moritaka Chisato - 11 Natsu no Hi';
ICY Info: StreamTitle='NSP - 08 Mizuumi';
ICY Info: StreamTitle='WANDS - 07 Koiseyo Otome';
ICY Info: StreamTitle='Nagabuchi Tsuyoshi - 07 Heroine';
ICY Info: StreamTitle='Nishida Hikaru - 09 Kitto Ai ga Aru';


ぅおおお、懐かしい曲名ばっかりじゃないかw
もう一度聞いてみたい曲がいくつか。
うーん、帰宅したら掛けるようにしようかな。


それはともかく、ずっと流れていたってことは特にアプリには問題なさげ。
で、dmesg を見たら、次のようなメッセージが。

[93363.746390] smsc95xx 1-1.1:1.0 eth0: link down
[93380.091382] smsc95xx 1-1.1:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0x41E1
[93387.762384] smsc95xx 1-1.1:1.0 eth0: link down
[93389.394395] smsc95xx 1-1.1:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0x41E1
[93400.154369] smsc95xx 1-1.1:1.0 eth0: link down
[93401.803430] smsc95xx 1-1.1:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0x41E1
[93402.154390] smsc95xx 1-1.1:1.0 eth0: link down
[93403.826766] smsc95xx 1-1.1:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0x41E1
[93404.226453] smsc95xx 1-1.1:1.0 eth0: link down
[93405.802555] smsc95xx 1-1.1:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0x41E1
[93435.570112] smsc95xx 1-1.1:1.0 eth0: link down
[93437.154552] smsc95xx 1-1.1:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0x41E1
[93466.794364] smsc95xx 1-1.1:1.0 eth0: link down
[93468.434444] smsc95xx 1-1.1:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0x41E1
[93635.530106] smsc95xx 1-1.1:1.0 eth0: link down
[93637.106556] smsc95xx 1-1.1:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0x41E1
[93863.826375] smsc95xx 1-1.1:1.0 eth0: link down
[93865.426567] smsc95xx 1-1.1:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0x41E1
[94029.698331] smsc95xx 1-1.1:1.0 eth0: link down
[94031.347448] smsc95xx 1-1.1:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0x41E1


……ちょっと思い当たることがある。
LAN ケーブルは自作しているんだけど、作成時に不安定だったやつだ。
接触不良なんだろうなぁ。
自分で使う分だし、繋がるからいっかなって使い続けてたけど、やっぱダメか。
まぁ、他の Raspberry Pi で dmesg を見たけど、問題出てないから、これを作り直せばいいやね。


今後は、ちょっとでも不安があったら作り直そうっと。



……ん、スピーカーの音質?
100 ショップのスピーカーだねって納得できるレベルですよ。
音質にはこだわりなんてないので、僕にはこれで十分。


ただ、音量はさすがに誤魔化せないので、アンプの利用を思いついたわけで。
ついでに学習用キットでのはんだ付けもしてみて楽しかった……と。

Evernote Clip を使っていてちょっと疑問に思ったこと

参照していた Web ページで Evernote Web Clipper ボタンをクリックすると、そのページが Evernote にクリップされるので、便利に使っている。


で、ふと疑問に思ったのだけれど、このクリップの動きって、どうなっているんだろう?
簡単に、ネットワーク的な構成図を起こしてみる。



構成図。


Evernote があって、クリップ対象のコンテンツがあって、自分が使っているコンピュータがある。



想定1 データアップロード


Evernote Web Clipper」をクリックすると、参照していたページを Evernote にアップロードするのか?



想定2 Evernote サーバ側でダウンロード


Evernote Web Clipper」をクリックすると、参照しているページを Evernote 側にクリップするよう指示が出て、Evernote 側のサーバでデータをダウンロードするのか?

検証

この疑問を検証するために、家庭内 LAN で example.jp サイトを作って、クリップしてみた。


クリップ対象サイトは、apache2 をインストールした Raspberry Pi のデフォルトサイト。


ダイアルアップルータを介した家庭内なのでインターネット側から参照できないし、当然 Evernote のサーバからもアクセスできない環境にある Web サイト。
これをクリップしてみたら、何事もなくクリップできた。


ということは、自分の端末から Evernote にアップロードしているみたい。
(パケットキャプチャまではしてない)


ふーん。


まぁ、それだけ。

年始一発目のトラブル対応

明けましておめでとうございます。


〜〜 2018.1.4 追記 以下、嘘になっちゃった内容があります〜〜
よく考えたら、bind の root ヒントファイルって、インストール時のそのままなんだよね。
インストール時のファイルが古いってだけだったので、root とかは全然間違ってなかった。
新年早々、失敗失敗……
〜〜 2018.1.4 追記ここまで 〜〜〜

続きを読む

NOOBS ダウンロード

Raspberry Pi の OS を簡単にインストールできる、NOOBS のダウンロードで何回かしくじったので備忘。


次の公式サイトでダウンロードできるんだけど、1.5GB あるためか、何回もダウンロードに失敗するんだよね。


https://www.raspberrypi.org/downloads/noobs/


前回も失敗して、結局なにか適当にダウンローダを使ったのだけは思い出したんだけど、何つかったか思い出せず。


で、ググったらちゃんと前回履歴が出た。
Irvine だった……


で、ダウンロードするための URL が直でリンクをコピペすると https://downloads.raspberrypi.org/NOOBS_latest になっていて、ダウンロードできず。


失敗したダウンロードの表示画面から URL を探して、これでアクセス。
http://vx2-downloads.raspberrypi.org/NOOBS/images/


うん、古いのから新しいのまで、いろいろあるねー。