Nextcloud プロバイダの無料プランを比較する

 自由ソフトウェアのオンラインストレージソリューション,Nextcloud をご存知でしょうか?
 簡単に言えば,Dropbox と Google Drive と Google Docs と Google Calendar をすべて合わせた上にマルチメディアやビデオチャットなどの機能も加えたものを自分のサーバで利用できるようにするという恐ろしい代物です。さらに,オンラインストレージ・コラボレーションツールとして定評があった ownCloud の創業者および主要開発者陣が独立してフォークした 1という経緯から,この多機能さにもかかわらずエンタープライズレベルの安定性があり,既に様々な組織で採用されているようです 2。Linux, Windows, macOS, Android, iOS, Windows Phone に対応した使いやすい公式クライアントが提供されており 3,大規模な組織から個人まであらゆるニーズに対応しています。

 Nextcloud ではユーザが自分自身でサーバを運用することが基本です。では,サーバ管理の手間なしに手軽に利用したい場合はどうすればよいのでしょうか? 開発元の Nextcloud GmbH ではホスティングサービスも提供していますが,法人向けプランのみです 4。もっとも,Nextcloud は自由ソフトウェアであるため,同一のソフトウェアでサービスを提供するサードパーティのプロバイダも存在します。プロバイダの一覧は Nextcloud 公式サイトで公開されており 5,こうしたプロバイダが提供するサービスには,安価な個人向けプランがあるのはもちろん,無料プランも存在しています。

 以下が,これらの無料プランを比較した表です。

プロバイダ名 DediSERVE Vault oCloud.de OwnDrive Pixel X e.K. Serverdiscounter Unixcorn Project Webo Hosting woelkli Cloud Storage Zaclys
運営主体 Dediserve Ltd. 個人(情報開示あり) 個人(情報開示あり) Pixel X e.K. 個人(情報開示あり) 不明 個人(情報開示あり) oriented.net GmbH Association la mère Zaclys
種別 非公開の株式会社(アイルランド) 個人事業(ドイツ) 個人事業(ノルウェー) 無限責任社員1名の会社(ドイツ) 個人事業(ドイツ) 不明(フランス?) 個人事業(スロベニア) 有限会社(スイス) 非営利団体(フランス)
運営主体設立年 2009 不明 不明 不明 不明 不明 不明 2014 1998
                   
容量(GB) 10GB 1GB 1GB 5GB 5GB 1GB 1GB 1GB 1GB
ファイルサイズ制限 不明 不明 不明 100MBまで 不明 不明 不明 不明 不明
                   
サーバ所在地 不明 ドイツ EU ドイツ ドイツ ドイツ 不明 スイス フランス
可用性(%) 99.99 非公表 非公表 非公表 99.5 非公表 非公表 非公表 非公表
定期バックアップ 不明 あり 不明 なし 不明 不明 不明 不明 なし
UPS 不明 あり 不明 不明 不明 不明 不明 不明 不明
サーバサイド暗号化 あり あり 不明 不明 不明 不明 不明 あり 不明
バージョン 不明 13.0.0 不明 不明 12.0.3 不明 不明 不明 不明(最新版)
サイトの言語 完全な英語対応 良好な英語対応 完全な英語対応 ほぼドイツ語のみ ドイツ語が多い ほぼフランス語のみ スロベニア語が多い 完全な英語対応 フランス語が多い

※ 2018年3月31日現在。Nextcloud 公式サイト掲載のプロバイダ一覧 https://nextcloud.com/providers/ に掲載されているサービスのみ。
※ 以下のサービスは除外しています。
Hostiso(情報不足), IndieHosters(情報不足), Open IT Store(情報不足), XT3(サーバ設定に問題), Quality Location UG(日本からのアクセスが遮断)

Comparison Chart of Nextcloud Providers’ Free (Gratis) Plans

Provider DediSERVE Vault oCloud.de OwnDrive Pixel X e.K. Serverdiscounter Unixcorn Project Webo Hosting woelkli Cloud Storage Zaclys
Organization Dediserve Ltd. Individual (disclosed) Individual (disclosed) Pixel X e.K. Individual (disclosed) N/A Individual (disclosed) oriented.net GmbH Association la mère Zaclys
Type Limited company (IE) Sole proprietorship (DE) Sole proprietorship (NO) “Eingetragener Kaufmann” (DE) Sole proprietorship (DE) N/A (FR?) Sole proprietorship (SI) Limited company (CH) Non-profit Organization (FR)
Established 2009 N/A N/A N/A N/A N/A N/A 2014 1998
                   
Server space (GB) 10GB 1GB 1GB 5GB 5GB 1GB 1GB 1GB 1GB
File size limitation N/A N/A N/A Up to 100MB N/A N/A N/A N/A N/A
                   
Server location N/A Germany EU Germany Germany Germany N/A Switzerland France
Availability (%) 99.99 N/A N/A N/A 99.5 N/A N/A N/A N/A
Backup N/A Yes N/A No N/A N/A N/A N/A No
UPS N/A Yes N/A N/A N/A N/A N/A N/A N/A
Server Side Encryption Yes Yes N/A N/A N/A N/A N/A Yes N/A
Server Version N/A 13.0.0 N/A N/A 12.0.3 N/A N/A N/A N/A (latest)
Web site language Perfect English support Good English support Perfect English support Mostly in German Many German pages Mostly in French Many Slovenian pages Perfect English support Many French pages

※ As of 31 Mar 2018. Within the scope of services listed on Nextcloud official website https://nextcloud.com/providers/
※ Services below have been excluded.
Hostiso (insufficient information), IndieHosters (insufficient information), Open IT Store (insufficient information), XT3 (problem with server configuration), Quality Location UG (access from Japan is blocked)

 表中にあるサーバサイド暗号化とはデータをサーバ上で暗号化して保管する仕組みで,経路を保護するエンドツーエンド暗号化(E2EE),データをローカルで暗号化したうえでアップロードするクライアントサイド暗号化とは区別されるべきものです。クライアントサイド暗号化と違い通信量は増加しませんが,原理上サーバ管理者による盗聴には無力です。
18/04/26追記:Nextcloud では各クライアント間の同期までを一連の通信とみなしているらしく,「end-to-end encryption」の語をクライアントサイド暗号化と同じ意味で使っているようです。 6
 大半のサービスは 1GB の提供となっており,10GB もの容量を提供している DediSERVE が圧倒的な存在感を持っています。運営主体の DediServe 社はこのリスト中では最も大規模な事業者であり 7,アイルランド企業であることから完全に英語に対応している,障害情報等の報告も充実しているといった強みもあって,大容量であるだけでなく安心感も大きいです。欠点は Nextcloud サービスではサーバ所在地が選択できず限定もされていないことで,DediServe 社が利用しているサーバには米国,香港,シンガポール,インドネシアといった法的リスクが比較的高い国に位置するものが含まれている 8ことに加え,アジアおよび北米のサーバは香港 PCCW 社のデータセンタを利用しているものが少なくないようです 9。もっとも,(Dropbox や Google のような)一般的なサービスの基準でいえばまったく問題にされないレベルのリスクですし,Cryptomator 等を利用してクライアントサイド暗号化で利用することもできます。
 DediSERVE 以外では Pixel X e.K. と Serverdiscounter が 5GB を提供していますが,どうも両方ともユーザ数が非常に少ないようですし 10,前者はそもそも有料プランとの差別化のためのファイルサイズ制限が厳しすぎます。
 結論としては,無料プランが前提であれば DediSERVE を選べば間違いないと思われます。
 18/04/02追記:登録を試みたところ,自動検出により不正な登録であると判断され,1) クレジットカードの発行銀行および発行国を証明する書類,2) 写真付き身分証明書のスキャンまたは写真,3) 住所が記載された公共料金請求書のスキャンまたは写真 のうち2点以上をアップロードするよう求められました。もちろん全く論外であり,この条件ではおすすめできません。
18/04/26追記:再度試みてみたところ,今度はすんなりとプランを追加できました。どういう基準になっているのか謎ですが,弾かれた場合も日を置いてまた試してみるといいかもしれません。

常時 TLS に対応しました

 このサイトで利用しているホスティングサービス Minibird (StarServer) が Let’s Encrypt に対応していたので,遅ればせながら導入してみました。そういえば随分前に対応予定のアナウンスが出ていたのですが,すっかり忘れてしまっていました。
 ネットオウルのアカウント情報画面から「サーバー管理ツール」にログインし,「SSL設定」を開き対象とするドメイン名を選択して「無料独自SSL」>「独自SSL設定を追加する(確定)」をクリックするだけでした。
 こうやって,ごく普通の廉価なホスティングサービスにも Let’s Encrypt の統合による常時 TLS 化機能が浸透しているのはよいことですね。数年前からしたら夢のような話です。

Piwik,Matomo になる

Piwik is now Matomo – Announcement – Analytics Platform – Matomo

 このサイトでも利用している自由ソフトウェアのアクセス解析ソフトウェア「Piwik」が,「Matomo」という名称へと変更されました。「Matomo」とは,そう,「まとも」に由来しています。
 Matomo という名称は「あらゆる言語で発音しやすい。(簡単に)覚えられる短さ。簡潔。そしてなにより… Matomo は日本語で honesty を意味し,これは私たちの重要な価値基準のひとつである透明性に通じるものです」 1とのことで,Piwik という名前が一部の言語では発音が困難であることを受けた選定であるようです。
 ただ,最大の理由は別にあるようです。「なぜ名前を Piwik のままにしないのですか?」という質問に答える形で,以下のような記述があります。「いくつか理由があり,そのうちの一つは,Piwik とは違って Matomo ではその名前を他の企業とは共有しないことを保証するためです。私たちはまた,Matomo ブランドを保護し,オープンソースコミュニティの名前としてずっと保ちたいと考えます」 2
 ここで言及されているのは「Piwik PRO」のことかと思われます。「Piwik PRO」についてはプロジェクト公式サイトの FAQ で説明されています 3。これはポーランドのある企業であり,Piwik を開発しているチーム及び InnoCraft 社とは資本的にも人的にも一切関係がないばかりか,プロジェクトへのコントリビューションも無いとのことですが,プロジェクト創設者から許諾された「Piwik PRO」という商標を所有しており,これを自らのビジネスで使用しているとのことです 4。この Piwik PRO がプロジェクト公式のものであると誤認されることを防ぐためにリブランディングの必要があったものと思われます。おそらくですが,許諾された当時は Piwik も「Piwik PRO」もずっと小さく,何年かでここまで成長するものとは思っていなかったために,現在の状況では不合理が生じていたのでしょう。
 ともかく Piwik 改め Matomo は本当におすすめのアクセス解析ソフトウェアです。日本語化もほぼ完全であり,簡単に使うことができます。この機会に是非試してみてください。

Get Matomo – Analytics Platform – Matomo

Raspberry Pi + L-02C でバッチリ安定する多機能 LTE ルータをつくったメモ

*注意*
 この記事は Raspbian が Jessie ベースの頃に書かれたものであり,現行の Raspbian Stretch では手順を適宜修正する必要があるかもしれません。また,筆者が回線付きの部屋へ引っ越したことに伴い,この LTE ルータは今のところ使用していません。
18年1月10日追記

 3大キャリアが横並びの料金・制度を維持している一方で,ドコモの回線網を利用する MVNO 業界はますます盛り上がりを見せています。各社とも特色あるプランを用意し,様々なニーズに応えられる便利かつわかりやすいシステムを発達させています。そしてそのどれもが3大キャリアの同等プランの数分の一の料金なのです。
 この春の契約見直しで,私は IIJmio のファミリーシェアプランを契約しました。音声通話オプションを付けて月額3520円,1ヶ月に10GBが利用でき,同一回線で SIM カードが3枚まで追加料金無しで利用できるというものです。10GBの高速通信容量の利用は回線ごとではなく SIM ごとに手軽にオン・オフすることができ,オフにすると最大200kbpsでの通信となります。スマートフォンならこんなものでも困りませんから,常時オフで使えば,スマートフォンでのデータ通信では容量が減らないことになります 1。これで,光回線と DTI の490円 SIM を置き換えることを狙いました。
 今回は,その IIJmio 回線で使う LTE ルータを Raspberry Pi + L-02C で仕立てたメモです。

全体像

  • Raspberry Pi をルータにする。回線は ドコモ LTE ネットワーク(MVNO : IIJmio)とし,L-02C で接続する。
  • RPi ルータには無線アクセスポイント機能を持たせず,市販のブロードバンドルータ(光回線で使っていたもの)を AP モードで運用,有線 LAN で RPi ルータに接続する。
  • apt-cacher-ng を導入する。
  • その他,BGM 再生機能,時報チャイム機能などを搭載する。

使ったもの

  • Raspberry Pi B 3500円 2
  • LG L-02C 2000円
  • システムトークス USB ハブ SUGOI HUB 4X AC アダプタ付き 2600円 バッファロー BSH4AE12 1600円(重要)
  • Transcend 16GB UHS-1 microSDHC カード 500円
  • テンキー 300円
  • アクティブスピーカ 500円
  • Raspberry Pi 用 USB-AC アダプタ 3 1000円
  • microUSB ケーブル 100円
  • 筐体(100均の箱・蝶番,ネジ) 600円

計:11100円
(価格は100の位までに四捨五入してあります)

 L-02C,USB ハブ,SD カードと筐体以外は実際には流用。後述しますが USB ハブの選択肢は非常に限られます。この機種を強く推奨します。

侮るなかれ熱暴走
 最初,こんな感じで使っていました。
DSCF2397
DSCF2405
 蓋を閉めて,すっきりしていいなあと満足していたのですが,なぜか止まってしまうことがあります。止まった状態でしばらく放置しても,SoC に電力は行っているようで,触ってみると熱を持っています。どうも熱暴走っぽい雰囲気です。SoC 温度のログを取ってみると,室温25度で60度近くまで行くようです。大した数字ではないようにも思いますが,初代 B で CPU が古い設計なので熱に弱いのかもしれません。熱で壊れたという話もちらほら聞くので,冷却は重要です。
 ファンをつけるというのが最も確実な対策ですが,ファンレスは男のロマンですので,なるべくファンレスの枠内でのエアフロー改善を目指しました。その結果,こんな感じになりました。
DSCF2416
DSCF2419
 はい,また100均です。前はもうちょっと精度の高いメッシュの小物入れも置いてあったのですが,近所3軒回ってなかったのでオシャレグッズコーナーにあったへなへなの小物入れで妥協しました。蝶番も100均で調達,ネジはホームセンターで購入した M3 の 8mm です。絶縁とホコリ除けのため,蓋側となる Raspberry Pi の下にはクリアフォルダから切り出したポリプロピレンのシートを敷いてあります。コンパクトさ重視のためエアフローは合理的とは言えませんが,効果はかなりあり,同条件で概ね43度以下で推移するようになりました。今のところハングアップもありません。夏場はどうなるかわかりませんが,50度を超えることはないでしょう。
 (16/5/4追記)ウワーだめだ。カーテンを開けたまま部屋のサーキュレータを止めて散歩に出かけて帰ってきたら春の陽気に誘われて意識不明の重体になっていました。室温はそれでも28度。残念ながら,部屋の隅に置く通信機器としては,来たるべき夏をファンレスで乗り切るのは難しそうです。とりあえず普段使っているBIGFAN 80Uを筐体の横に置いてみました。ファンコンスイッチを挟んで回転数を抑えてありますが冷える冷える。室温28度ですが32度で安定しています。ロマンの敗北は残念ですが,やむをえまい。次に秋葉原に行った時にでも静かそうで5V以下でも動きそうなファンを買ってきて筐体に組み付けたいと思います。

LTE 回線の仕様
 MVNO の LTE 回線には,プライベート IP アドレスが割り振られるものとグローバル IP アドレスが割り振られるものが存在しています 4。私が今回契約した IIJmio は前者です。プライベート IP アドレスはローカルエリアネットワーク内での居場所を指し示すものに過ぎず,インターネットの向こう側からこちらにアクセスすることはできません。したがって,LTE 回線を利用してサーバを公開したり,P2P ファイル交換を利用することはできません。逆に言えば,セキュリティについてはそれほど心配する必要はないでしょう。この記事はプライベート IP が割り当てられる回線を念頭に置いたものですのでご注意ください。グローバル IP が割り当てられる環境の場合,ファイアウォールやサーバ設定をより慎重に行い,ソフトウェアアップデートを欠かさず行う必要があります。

ハードウェアの仕様・問題
 Raspberry Pi は,誰もが忘れていますがあくまでも教育用のマイコンボードであり,常時稼動でバリバリ使う前提で作られているデバイスではありません。電源アダプタはノーブランド品を避け容量に余裕があるものを選択するだとか,SoC と LAN コントローラにヒートシンクをつけるだとかいった基本は抑えておきましょう。また,第一世代では USB 端子の出力電流が少なく,各ポート 100mA となっています 5。最大で 740mA 消費する 6L-02C はバスパワー駆動では全く足りないので,セルフパワーの USB ハブを用意する必要があります。B+/2B では設定の変更によって, 7,3B では,デフォルトで全ポート合計で最大 1.2A まで供給可能 8なので,一時的な使用であればバスパワーでも問題なさそうですが,後述のように安定して運用するためには USB ポートの電源を制御する機能が必須であり,B/B+/2B/3B の内蔵ハブともにその機能はないようですので,やはり SUGOI HUB を購入する必要が有ります。
 L-02C について,当初は問題が多かったようですが,最新ファームウェア V10e では安定しているようです 9。ただし,いくつか注意すべき点があります。
・初期設定では,始めに CD ドライブとして認識され,それを eject するとモデムとして改めて認識されるというわけのわからない仕様になっています。これは無効化できます(後述)。
・SIM カードの認識がシビアなようで,mini/micro/nano SIM にアダプタを噛ませた状態で挿入すると SIM を認識できません(インジケータが赤く点滅していたら,SIM を認識できていないということ) 10。これは厚みに起因するらしく,アダプタの「背」の部分を切り抜くことで解決します。

Raspberry Pi の準備
 OS として「Raspbian Jessie Lite」を使います。これは Raspbian から X 等を除いた最小版で,今回のように Raspberry Pi をデスクトップ用途でない目的に使用する場合に適しています。
 まず,Raspberry Pi Foundation 公式サイトから,Raspbian Lite のイメージをダウンロードします。
 zip ファイルを解凍のうえ,dd で SD カードに書き込みます。もし SD カードが /dev/sdc として認識されていれば,コマンドは以下のようになります。

$ sudo dd bs=1G if=Downloads/2016-03-18-raspbian-jessie.img of=/dev/sdc

 書き込み終えたら Raspberry Pi に挿入して起動し,ユーザ名 pi,パスワード raspberry でログインします。

raspi-config でもろもろの設定をする

$ sudo raspi-config

 ”Internationalization Options” および “Expand Filesystem”を実行,設定。Boot Options から Console Autologin を選択(後述するテンキーでの操作を可能とするため)。Advanced Options の SSH から SSH サーバ有効化。好みで Hostname や Memory Split 11も設定。
続きは SSH から。

ユーザ名を変更
 まあ好みの問題です。

$ sudo adduser hoge
$ sudo nano /etc/systemd/system/getty.target.wants/getty@tty1.service

 自動ログインするユーザを変更します。

ExecStart=-/sbin/agetty --autologin pi --noclear %I $TERM

となっている行の「pi」を新しく作ったユーザにします。

$ sudo gpasswd -a hoge adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,gpio,i2c,spi

 pi が入っているもろもろのグループに入っておきます。

$ sudo passwd

 su できたほうが便利なこともあるので,root のパスワードを設定して su できるようにします。

音が出るようにする
 Raspbian Lite では標準ではオーディオドライバが読み込まれていないので,これを読み込みます。

$ sudo modprobe snd-bcm2835
$ amixer sset PCM 100%
$ speaker-test

 音が出たら,起動時にカーネルモジュールを自動で読み込ませるようにします。

$ sudo nano /etc/modules

 末尾に以下の一行を追加。

snd-bcm2835

ルータ機能のセットアップ
L-02C のファームウェアアップデート,リセット,CD として認識される機能の無効化
 ファームウェアアップデートと端末リセットは Windows でやります。ドコモの製品ページに書いてあるとおりにやるだけです。
 次に CD として認識される機能を無効化します。AT コマンドを送ることで恒久的に 12無効化することが可能です。
 手順は以下を参照のこと。

L-02Cを最初からUSBモデムで認識させる/手動でAPN登録する – /dev/stkinosh

wvdial の設定,IP フォワーディング・IP マスカレード
 書こうと思ったのですが,こちらも既に素晴らしい記事が多くありますので紹介のみにとどめます。私が見つけた中で最も網羅的でかつわかりやすい記事は以下です 13

L-02CでLTEルータ作成 – /dev/stkinosh

ほぼ上のとおりにやりました。違うことをしたのは以下のみです。

  • usb_modeswitch は今は導入不要。
  • wvdial.conf で,
    Init3 AT+CGDCONT=1,"IP","iijmio.jp"

    を追加(フラッシュメモリに APN をあらかじめ書き込んでおいて使うのではなく,接続時に ID・パスワードと一緒に渡す)。元々の Init3 は Init4 に。

  • wvdial.conf で,/dev/ttyUSB2 ではなく /dev/serial/by-path/platform-bcm2708_usb-usb-[ここは環境によって違うはず].2-port0 を指定。こちらは(ttyUSB* と違い)物理的に同じ場所に挿される限り不変なので,L-02C を再起動した(抜いて挿し直した)場合にも Raspberry Pi の再起動が不要になる。
  • $ sudo vi /etc/network/interfaces
    iface eth0 inet manual

    となっているのを,

    auto eth0
    iface eth0 inet static
    address 192.168.1.1
    netmask 255.255.255.0

    などとし,固定 IP を指定する。

  • iptables の設定保持用に netfilter-persistent (iptables-perssstent) を導入。仕上がったら
    $ sudo netfilter-persistent save

    するだけで保存して次回起動時にも読み込んでくれる。

  • まあ念の為ということで ssh は 192.168.0.0./24 および 192.168.1.0/24,domain および bootp (dhcp) は 192.168.1.0/24 からのアクセスのみを許可するよう変更。グローバル IP が振ってくる回線の人は必須です。別の回線から当該回線の IP に nmap -Pn してみて出てこなければオーケー。このへんがわかりやすい→iptablesの設定方法|さくらインターネット公式サポートサイト
  • ディレクトリ,ログ,DNS サーバなどを自分の好みに変更。

ほか,以下のページも参考にしました。
格安SIM(MVNO)とRaspberry Pi(ラズベリーパイ)でモバイルルータを作った 〜初期設定から完成まで〜 – $yuzu->log();
Qaplaの覚書・メモ・備忘録・独言 Raspberry Pi をUSBモデムでインターネット接続
Berrbear: Raspberry piでUSBモバイルモデム
SORACOM Air が使える USB 3G/LTE モデム、WiFi ルーターのまとめ – bearmini’s blog
Raspberry PiをL-02C+IIJmioでつないでみた: EeePCの軌跡
Raspberry Pi 2で0SIMをL-02Cで使ってみた。
Raspberry Pi 2 Model BをSORACOM Airに接続してみました。 #soracom |
デジモノステーション2016年2月号付録の0SIMをRaspberry Piで試す | matoken’s meme

ルータ以外の機能のセットアップ
 ルータ以外の機能をセットアップします。apt-cacher-ng を導入する以外は以前書いた「Raspberry Pi ホームオートメーション計画(1)」とほぼ同じです 14。それぞれの機能は USB テンキーで操作できるようにします。

apt-cacher-ng
 Apt-Cacher Next Generation は,APT の deb ファイルをキャッシュしてくれるソフトウェアです。これを導入することによって,アップデートに伴うデータ通信を削減することができます。LAN 内に Debian 系で同じアーキテクチャ(i386 など)の同じディストリビューションが導入されたマシンが複数台ある場合に有用です。サーバにインストールしたうえでクライアントでプロキシの設定をするだけで利用できます。なお,場合によっては大量のデータをローカルに書き込みますので,SD カードの寿命を大きく削ることが予想されます。最初 USB メモリや USB HDD などに書き出すことも考えましたが,一度設定が完成したらオリジナルの(消えたら困る)データは蓄積されませんので 15,SD カード一本で行って壊れたら都度買い直して dd でイメージを書き戻すようにした方が手間を考えると低コストであると考え,とりあえずそれで様子を見ることにしました。

# aptitude install apt-cacher-ng

 次にポートを開けます。ローカルネットワークから,ポート3142への通信を許可します。上で紹介したページでの IP アドレスレンジ,rules の場合の例。

$ sudo iptables -I OPENNEW 4 -p tcp --dport 3142 -s 182.168.1.0/24 -j ACCEPT

 よくある凡ミスでパケットを全部 drop した後ろにルールを追加して反映されないというのがありますので気をつけてください 16。iptables は上から順番に逐次マッチングされて,最初に見つかった合致するルールだけが使われます。
 LAN 内のマシン全てに以下のファイルを作ります。

# vi /etc/apt/apt.conf.d/02proxy

中身はこんな感じで。

Acquire::http::Proxy "http://192.168.1.1:3142/";

 update のうえで何かインストールしてみて,/var/log/apt-cacher-ng/apt-cacher.log にきちんとログが残っていたらうまくいっています。http://192.168.1.1:3142/ にブラウザでアクセスすると,キャッシュのヒット率などを見てニヤニヤすることができます。
第315回 apt-cacher-ngを使ってAPT用キャッシュプロキシの構築:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社

音楽再生
 次に ogg123 を導入します。この手の用途では mplayer がよく使われますが,多機能な一方 X に依存しているなどヘッドレス環境で使うにはあまり便利でないので,単機能でコンパクトなこちらのソフトを選択しました。

$ sudo aptitude install vorbis-tools

 たとえば,~/Music/Classical にある全ての ogg ファイルをシャッフルして無限ループさせる場合は以下のようにします。

$ ogg123 -r -z -q Music/Classical/*.ogg &

 mp3 ファイルを使用する場合は,mpg321 を使用します。ソフト名は mpg321 ですが,コマンドとしては mpg123 でもデフォルトでパスが通っています。逆に ogg321 はダメなので,ごっちゃにならないよう mpg123 として使うことをおすすめします。

$ sudo aptitude install mpg321
$ mpg123 -r -z -q Music/Classical/*.mp3 &

 これを後で alias に設定します。

チャイムを鳴らす
 部屋にいることが多い学生身分なので,だらだら過ごしてしまわないよう時報を鳴らすようにしています。私の設定は以下で,朝8時〜夜10時まで1時間ごとにチャイムが鳴ります。

$ crontab -e
0 8-22 * * * ogg123 -q [パス]/chime.ogg

なお,「crontab -e」しようとして「crontab -r」しちゃうというのは定番ネタですので,.bashrc に alias ‘crontab’=’crontab -i’ を加えておくのがおすすめです。
cron の設定ガイド

データ通信量を出す
 本当は「みおぽん API」を使おうと思ったのですが,この辺になるとそろそろめんどくさい短い人生の限りある時間を大切に使おうという気持ちが強まってきたので,/proc/net/dev を使って簡易的に済ませます。

$ grep eth0: /proc/net/dev | while read x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11; do echo $(((x2+x10) / 1024 / 1024)); done

 これで eth0 を通った上り・下りのデータ量の合算を表示できます。単位は MB です。後述のように LTE の接続が切れて ppp0 が消えてしまうことがあり,その時に累積が消えてしまうので,入口の ppp0 ではなく LAN への出口の eth0 を見ています。Raspberry Pi 自体の通信(ソフトウェアアップデートなど)は反映されませんが,このさい細かいことは気にしない。
 /proc/net/dev は再起動するとリセットされるので,電源を切るときはどこかに書きだしておく必要があります。/var/log/packetcount.log に書き出すとして,以下のようにすると合算して表示できます。

$ grep eth0: /proc/net/dev | while read x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11; do echo $((((x2+x10) / 1024 / 1024)+$(cat /var/log/packetcount.log))); done

 このまま実行するとファイルが存在せず何も挿入されず文法エラーになるので,/var/log/packetcount.log を作って 0 とだけ書いて保存しておいてください(雑

 これを毎月リセットするために,crontab を設定します。Raspberry Pi には RTC がなく,たとえば1日0時5分などとすると5分以内に NTP サーバとの通信がうまくいかなかった場合に実行されてしまいますので,余裕を持った時間指定にしておきます。

$ sudo crontab -e
1 10 1 * * echo '0' > /var/log/packetcount.log

ネットワークの転送量を調べる方法 – ぴょぴょぴょ? – Linuxとかプログラミングの覚え書き –

OpenJTalk で喋らせる

$ sudo apt-get install open-jtalk open-jtalk-mecab-naist-jdic htsengine libhtsengine-dev hts-voice-nitech-jp-atr503-m001

 オプションを引数で指定するのが必須だったり,wav ファイルとして出力されるのでそれを別途再生する必要があったりといろいろ煩雑なので,引数として文字列を渡せばそのまま喋ってくれるスクリプトを用意しておきます。なお,Raspbian のベースが Wheezy から Jessie に変わった関係で,OpenJTalk の使い方もやや変わっているのでお気をつけ下さい。

$ nano /usr/local/bin/ojsay
#!/bin/bash
TEMP=$HOME/ojsay.wav
echo $1 | open_jtalk -x /var/lib/mecab/dic/open-jtalk/naist-jdic -m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice -ow $TEMP
aplay --quiet $TEMP
rm $TEMP
$ chmod +x ojsay
$ ojsay 誰かがヨーゼフ・Kを中傷したにちがいなかった。悪いこともしていないのに,ある朝,逮捕されたのだ。

 少し待たされて,読み上げられるはずです。むちゃくちゃお手軽ですね。処理に時間がかかるのと,一文が長くなると突然読み上げがやたら遅くなるというバグ?があるようなので,一度に喋らせるのは一言二言にしておくのがおすすめです。
他のコマンドの出力やウェブスクレイプイングと組み合わせれば,可能性は無限大です。

$ ojsay "$(date +"%B%d日 %I時%M分")"

 日時を読み上げ。

$ ojsay "現在のコア温度は $(echo $(($(cat /sys/class/thermal/thermal_zone0/temp)/1000)) | sed s/\.[0-9]+$//g)度 です"

 SoC の温度を読み上げ。

$ sudo aptitude install curl
$ ojsay "$(curl http://www.tenki.jp/forecast/3/16/4410/13101-daily.html 2> /dev/null | grep -e "wethreDrtalIiconText" | sed "-e s/<[^>]*>//g" "-e s/^ *\(.*\)\$/今日の天気は \1 です/" | head -n1)" | head -n1"

 天気を読み上げ。

$ ojsay "$(curl http://www.asahi.com/ 2> /dev/null | grep -A 1 "iref=comtop_6" | sed "-e s/<[^>]*>//g")"

 朝日新聞社ウェブサイトの見出し読み上げ。(流石に結構待たされる)
RaspberryPiにOpenJTalkをインストールする – 試したこととか困ったこととか
Debian Jessie に OpenJtalk を入れてテキストを読み上げてみた – 残しときます(自分用)
Linux – シェルスクリプトで天気予報取得! – mk-mode BLOG

テンキーで操作できるようにする
 入力は USB テンキーから行います。最初はプログラマブルテンキー「NT-19UH2BK」を検討したのですが,金欠なので無駄をなくし環境負荷を軽減するために棚に転がっている普通のテンキーを有効活用することにしました。入力そのものは数字だとか記号だけですので alias でそれぞれにコマンドを割り当てます。まあ,今回の用途なら特に不足はありません。

とりあえず,こんな感じで割り当てました。

* 再起動
*** 停止
7 SoC 温度読み上げ
8 ニュース見出し読み上げ
9 音声出力オン
+ データ通信量読み上げ
+++ データ通信量リセット
4 天気予報読み上げ
5 日付読み上げ
6 音声出力オフ
1 再生開始1
2 再生開始2
3 再生停止
0 ping
00 L-02C 電源リセット(詳細は後述)
000 アップデート試行
000000 とてもつらい

以下を ~/.bashrc に追加します。

alias '*'='ojsay '再起動します'; if [ "$(grep eth0: /proc/net/dev | while read x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11; do echo $(((x2+x10) / 1024 / 1024)); done)" != "" ]; then sudo sh -c "echo "$(grep eth0: /proc/net/dev | while read x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11; do echo $((((x2+x10) / 1024 / 1024)+$(cat /var/log/packetcount.log))); done)" > /var/log/packetcount.log"; fi; sudo sh -c "shutdown -r now"'
alias '***'='ojsay '停止します'; if [ "$(grep eth0: /proc/net/dev | while read x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11; do echo $(((x2+x10) / 1024 / 1024)); done)" != "" ]; then sudo sh -c "echo "$(grep eth0: /proc/net/dev | while read x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11; do echo $((((x2+x10) / 1024 / 1024)+$(cat /var/log/packetcount.log))); done)" > /var/log/packetcount.log"; fi; sudo sh -c "shutdown -h now"'
alias '7'='ojsay "現在のコア温度は $(echo $(($(cat /sys/class/thermal/thermal_zone0/temp)/1000)) | sed s/\.[0-9]+$//g)度 です"'
alias '8'='ojsay "$(curl http://www.asahi.com/ 2> /dev/null | grep -A 1 "iref=comtop_6" | sed "-e s/<[^>]*>//g")"'
alias '9'='amixer sset PCM on'
alias '+'='ojsay "今月のデータ通信量は $(grep eth0: /proc/net/dev | while read x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11; do echo $((((x2+x10) / 1024 / 1024)+$(cat /var/log/packetcount.log))); done)メガバイト です"'
alias '+++'='ojsay "データ通信量の記録をリセットします"; sudo sh -c "echo '0' > /var/log/packetcount.log"; sudo sh -c "shutdown -r now"'
alias '4'='ojsay $(curl http://www.tenki.jp/forecast/[お住まいの地域の URL] 2> /dev/null | grep -e "wethreDrtalIiconText" | sed "-e s/<[^>]*>//g" "-e s/^ *\(.*\)\$/今日の天気は \1 です/" | head -n1)'
alias '5'='ojsay "$(date +%B%d日%I時%M分)"'
alias '6'='amixer sset PCM off'
alias '1'='ogg123 -r -z -q ~/Music/Jazz/*.ogg &'
alias '2'='ogg123 -r -z -q ~/Music/Classical/*.ogg &'
alias '3'='sudo sh -c "pkill -f 'ogg123'"'
alias '0'='ojsay "$(ping=$(echo "$(ping -c1 8.8.8.8)"|grep " 0% packet loss"); if [ "$ping" = "" ]; then echo "ネット接続に問題があります"; else echo "ネット接続は正常です"; fi)"'
alias '00'='sudo sh -c "checkppp0"'
alias '000'='sudo sh -c "aptitude update; sudo aptitude upgrade -y"'
alias '000000'='ojsay "とてもつらい"'

 このままだと sudo sh がパスワード入力待ちで止まってしまいますので,これらのパスワード入力を不要にします(雑

$ sudo visudo
hoge ALL=(ALL) NOPASSWD: /bin/sh

を追加。ま,今回の場合パスワード入力は自分のフールプルーフになればいいのでこれでよしとします。
 テンキーにシールを貼るなどして割り当てた機能を書いておくとわかりやすいです。

L-02C の自動再起動を実現する
 よし完成,めでたしめでたし……と思ったら,ときどき通信が切れて,L-02C の電源を一度切るまで(ポートから一度抜いて挿しなおすまで)使えなくなることがあることに気が付きました。どうも L-02C のファームウェアの安定性に何かしら問題があるようです。数分おきに ping を飛ばすなどして自動切断の回避を試みるなどしても 17,あまり効果はないようです。他は完璧なのに,ここだけはどうやってもうまくいきません。
MR-GM2運用テスト、とりあえず失敗・・・ | めざせ東京リーマンの千葉週末田舎暮らし
MR-GM2運用テスト、その後・・・|めざせ東京リーマンの千葉週末田舎暮らし ー太陽光発電の売電収入で別荘が買えるかー
格安simをパソコンで使えるようにする曲者デバイスL-02cを紹介(オススメするとはいわない)|投げて、捨てて、シンプルライフ

 残念ながら AT コマンドでハードウェアを再起動させる方法はない模様です。しかしまあ,要するに,一度電源を切ってやればよいのです。/sys/bus/usb/drivers/unbind や /sys/bus/usb/devices/*/power/control 18 19 20から電源を切れますし……と思ったら,できない。前者は認識はしなくなるけど電源は切れない。後者は存在すらしない。なんで。
 しばらくさまよい歩くと,「hub-ctrl.c」というイカしたツールを見つけました。これを使えば,USB ポートの電源をより手軽に制御できるとのことです。――自分の環境ではできませんでしたが。なんでも,lsusb -v してみて Hub Descriptor に「Per-port power switching」とあるものでしか電源制御はできないらしい。「No power switching」や「Ganged power switching」とあるものはそもそもそのための回路が入っていないとのこと。最初に購入した U2HS-T201SBK という USB ハブは,案の定というか「Ganged power switching」でした。なんてこった。名前からはできそうな雰囲気が漂っているんですけどね…..光学マウスを付けて試してみたら,(全てのポートに一斉に反映されるのではなく)特定の1ポートのみに反映され,ランプが消えました。これは行けるか? と L-02C につなぎ替えてみたら無理でした。USB ランプ(単に電力を取ってるだけでなんの制御回路もなし)をつないでいると p=0 にしても光ったままですから,電源自体は供給されたままのようです。手元にあった U2HS-T201SBK(バスパワー)および BSH5U03(セルフパワー)の2機種で同じ挙動。また,実機が手元にないのと情報が少ないのでなんともいえませんが,今回使用した B に加え B+/2B/3B の内蔵ハブもポート個別の電源制御はできないようです。
 じゃ「Per-port power switching」なハブってどんなのがあるのというと,マザーボード内蔵のものを除き殆ど無いんだそうな。まあ確かに USB ハブのポートを個別に制御しようという需要なんてあんまりないでしょうからねえ。動作報告のある現行品で唯一の選択肢が,「SUGOI HUB 4X (USB2-HUB4X)」というものらしい。なんとなく不安になる製品ページですが,ともかく,4つあるポートの内なぜか2つだけですがちゃんと電源を制御でき,USB ランプのような電源ラインしか使っていない機器もオンオフできるらしい。ということで購入。予算オーバーつらい。
 喜び勇んで /sys/bus/usb/ 方面を漁ってみたのですが,power/control がない。ああそうだった。調べてみると,Raspbian が採用している4.1系のカーネルではこの制御方法は廃止されているようです。unbind にデバイス ID を書き込むやり方は使えて,無事にオンオフできましたが,両方のポート一斉にしかできません 21。まあそれでも困りませんが,せっかく買ったので実力を出し切りたい。幸い,先述の hub-ctrl を試してみたところ今のカーネルでもそのまま使えましたので,これを採用することにしました。

$ wget http://www.gniibe.org/oitoite/ac-power-control-by-USB-hub/hub-ctrl.c
$ sudo aptitude install libusb-dev
$ gcc -o hub-ctrl hub-ctrl.c -lusb
$ chmod +x ./hub-ctrl
$ mv ./hub-ctrl /usr/bin/
$ sudo hub-ctrl -b 001 -d 004 -P 2 -p 0
$ sudo hub-ctrl -b 001 -d 004 -P 2 -p 1

 おー,いけるいける。lsusb して NEC Corp. HighSpeed Hub とあるものの Bus を -b, Device を -d,ポート番号(向かって左から1,2)を -P で指定しています 22。-p 0 でオフ,-p 1 でオン。これさえあればこっちのものです。
というわけで,

$ sudo vi /usr/local/bin/checkppp0
#!/bin/sh
pppalive=$( /sbin/ifconfig | grep "ppp0" ); if [ "$pppalive" = "" ]; then /usr/bin/hub-ctrl -b 001 -d 004 -P 2 -p 0; sleep 10; /usr/bin/hub-ctrl -b 001 -d 004 -P 2 -p 1; fi

 (crontab に一行で書こうと思ったけどなんかうまくいかなくて面倒くさくなってそのまま外部のスクリプトにしたというアレ)
 
 (16/9/11追記)追記し忘れていましたが,ハブを BSH4AE12 に交換して,1)ハブしか接続していなくても Device の番号がたまに変わるようになる,2)ポートのひとつひとつを選択して入切してやらないといけないっぽい?という仕様の違いがあったので,それに対応するために checkppp0 を修正しました。BSH4AE12 対応版は以下です。たぶん大丈夫と思いますがちゃんとチェックしてないのであんまり自信ない。

#!/bin/sh
pppalive=$( /sbin/ifconfig | grep "ppp0" )
if [ "$pppalive" = "" ]
        then
        HUB=`/usr/bin/lsusb -v 2>/dev/null | grep ^Bus | grep "Genesys Logic, Inc. USB-2.0 4-Port HUB"`
        BUS=`echo $HUB | awk '{print $2}'`
        DEV=`echo $HUB | awk '{print $4}' | sed -e "s/\(.*\)\:/\1/p;d"`
        for i in 1 2 3 4
        do
                /usr/local/bin/hub-ctrl -b $BUS -d $DEV -P $i -p 0
        done
        sleep 20
        for i in 1 2 3 4
        do
                /usr/local/bin/hub-ctrl -b $BUS -d $DEV -P $i -p 1
        done
fi

 
 ここまで何日もいじっていて,圏外(ランプ黄色),接続待機でのハングアップ?(ランプ白),接続再試行中のハングアップ?(ランプ青点滅)問わず通信ができなくなった時には確実にセッションも切れて(そしてそう認識されて) ppp0 が消えるらしいということがわかったので,単に ppp0 の存在確認をしています。ping を飛ばすのと違いネットワークに負担がかかりませんし,CPU も食いませんので,毎分だって実行できます。これによって,ダウンタイムを最小化でき,自宅回線としてストレス無く利用することができるようになります。15分の load average を見ても 0.1 を超えることはない(おおむね0.05〜0.07で推移)ようなので,更にチェックの頻度を上げるのもアリでしょう。
 (16/5/1追記)と書きましたが,ダメっぽいです。時々ひっそりと死んでいることがあります。理由は特定できていませんが,ログに出てないのでハードウェア側っぽく,熱は大丈夫なので電源周りっぽい雰囲気があります。2.4A対応アダプタ+ケーブルで試してもダメなので,本体の問題の模様 23。だとしたら,B+以降やポリヒューズ改造後の個体なら大丈夫かもしれません。そのへんはまた後で検討するとして,とりあえず毎分ではなく5分おきに実行するようにしてみたところ安定しています。
 (16/11/2追記)別ハードウェアで毎分の実行を試してみて気付きましたが,wvdial の自動再接続で事が済むような“正常な”接続断にまで L-02C 再起動で対応することが増えてしまうため,却ってダウンタイムが一気に増えてしまいます。やはりチェックのインターバルは数分程度はあったほうが良いようです。
 なお,今回は Raspberry Pi 本体にハブしか挿しておらず数字が変わらないのでベタ指定してますが,他のデバイスも挿している場合は,こちらを参考に lsusb から自動取得するようにするとよいでしょう 24
 
では,最後の敵をいざ倒さん。

$ sudo crontab -e
*/5 * * * * /usr/local/bin/checkppp0

 ふー,倒した。長かった。ともあれ,これでやっと RPi ルータが完全体になりました。

 (16/8/14追記)SUGOI HUB 4X が早くも故障してしまいました。享年4ヶ月という夭折です。改めてネットを眺めてみると,比較的ニッチな製品の割に故障報告が多く目に付きます。じっさい製品の値段もそう高くありませんし,回路は奢っていてもコンポーネントの質は高くないのかもしれません。修理をしても(これがまた販売店への持ち込み不可で最初にメールであれこれしないといけないとやたら煩雑なのですが,それはまた別の話……)また壊れてしまうかもしれません。そこで代替機種を調べてみることにしました。白羽の矢が立ったのが,「節電 USB ハブ」を謳うバッファロー BSH4AE06 です。とても小さい上,手にとってみると非常に軽く,おそらく中はスカスカでしょう。しかしその分,部品点数が少なく壊れにくいことが期待できます。この機種は既にディスコンになっており,後継機種として BSH4AE12 というものが出ています。型番や能書きを見る限り,中身は miniUSB 対応から microUSB 対応に修正された以外は同じものではないかと思われます。今はまだ BSH4AE06 の方が安いですが,まもなく入れ替わることになると思います。なお,USB 3.0 ハブにも目を向けると,電源制御に対応しているという報告のあるものがいくつもあります。 25ただし,セルフパワー対応のものはまだ値段がこなれていません。
 さて BSH4AE06 ですが,結論としては「当たり」でした。Per-port power switching ではなく ganged power switching ですが,先述のような,実際には電源制御できないのに(おそらくは設計上の不備によって)情報だけはそう渡していると思われるものではなく,「本物の」 ganged power switching ですので,ポートごとの電源制御はできませんが,ハブの全ての電源を一度にオンオフすることであれば可能です。lsusb すると「Genesys Logic, Inc. USB-2.0 4-Port HUB」というのがありますので,/usr/local/bin/checkppp0 を先述の要領で書き換えます。また,/etc/wvdial.conf のモデムのパスも書き換える必要があります。
 あと,この件に関する修正を加えるにあたって,この記事がものすごく役に立ちました。当然といえば当然ですが,何かするときに記録を細かく残すのは大切ですね。

 しばらく運用してみて大丈夫そうなら,完成です! おめでとう! 忘れずにバックアップしておきましょう。shutdown -h now したあとカードを別のマシンに刺して,わかりやすいファイル名で保存しておきます。圧縮をかけると未使用領域が縮んでナイス。

$ sudo sh -c "dd if=/dev/sdc | gzip -c > RPI-LTE-ROUTER-$(date "+%y-%m-%d").gz"

(/dev/sdc の部分は環境によって異なります)
 いやあ〜よかったよかった。
モーション検出でUSBライトのON・OFF
LinuxからUSB HUBの電源のON/OFFを制御してみる – memoメモ
電源制御型USBハブでUSBチューナーの見失い状態を解消する。(PX-W3U3、S3U2ほかUSBチューナー汎用): Vladiのブログ
IoTでアボカドの発芽促進とカビを防止する – Part2: BeagleBone Blackで植物育成LEDライトを制御する – Qiita
えびめも(2011-05-30)
GitHub – codazoda/hub-ctrl.c: Control USB power on a port by port basis on some USB hubs.

感想
 3,4年周回遅れなだけあり情報が多く,基本機能については OS 導入から DHCP で IP アドレスを貰ってネットに出られるようになるまでが1時間くらいで終わりました。が,そこからが長かった。ちょっとした問題を潰すために試行錯誤したり,問題の原因を探るために勉強しなおしたりで,期間で一週間以上,丸何日かを費やしました。この記事を書くにあたっても,調べなおしたり再現するか確かめたりしてさらに1日潰れました。いちおう2週間近く実用したうえでの記事公開ですが,まだ何か起こるかもしれないとヒヤヒヤです。しかし,市販のモバイルルータも常時稼動に対応するほどには安定してはいないらしく,データ通信ドングルに対応したルータもいまいち痒いところに手が届かないようですから,LTE 回線を自宅回線として使いたいのであれば,「Raspberry Pi で DIY する」というのがいまのところ最良の選択肢でしょう。ネットワークの復習を含めなかなか勉強になるので,時間に余裕があればやってみると面白いはずです。

4ヶ月使ってみての感想
 記事公開から4ヶ月ほど経ちました。しばらく光と併用していたので正味では2ヶ月くらいですが,中間報告をば。

  • 1ヶ月10GBに収めるためには1日あたり333MBまでの通信に収める必要があります。これはけっこう厳しいですが,ストリーミング系は禁止とし,漫然とウェブブラウジングすることもやめれば,特に問題ない範囲です。この負のインセンティブにより時間を有効に使えるようになるというメリットもあります(?) ブラウザを起動しない日を週に何日か取るようにすれば完璧です。土日は古今東西の名著を手にとったり近場を散歩したりして過ごしましょう。なんて健康的なんだ。
  • 通信速度はそれなりですが,LTE なので ping が速めで,体感としては割と快適です。テキストベースのサイトであれば光回線と違いがわかりませんし,画像の多いサイトでも少し引っかかる程度です。混雑する時間帯でも体感としては ADSL の遅いとき程度です。
  • 自動再接続のおかげで「使おうと思ったら繋がらない」ということはほとんどありませんが,回線が混雑する時間帯には複数のタブを同時に開くと読み込み中のまま止まったり接続がタイムアウトしたりすることがあり,その場合にはページを再読込する必要があります。
  • Linux ディストロのインストールディスクなど大きなファイルのダウンロードは困難です。通信速度が充分でも途中で失敗してしまうことが多いです。Wget などのダウンローダを使用すると多少改善しますが,それでも失敗が多いです。Bittorrent は“無駄”な通信が多いので容量制限のある回線では避けたほうが無難ですが,IIJmio では遮断されているようでそもそも使えません。ダウンロードに失敗するとその分のデータ容量が無駄となり痛いので,大きなファイルのダウンロードはなるべく避けましょう。なお,OS のアップデート程度であれば,回線が空いている時間帯であれば特に問題なくできます。
  • 空冷にしてからとても安定していますが,帰宅したらラズパイが落ちていたことが一度だけありました。電源か熱でしょうが,再現しないのでなんともいえません。思えば今使っている初代Bはもう4年くらい前に買ったブツですので,ハードウェアの変更も視野に入れています。

更新履歴

  • 16/05/01 接続確認の頻度が高すぎて動作が不安定になることがあった件を修正
  • 16/05/04 ファンレスの夢が破れた件について追記
  • 16/08/14 SUGOI HUB 4X がすごいすぐ壊れた話と BSH4AE06 への乗り換えについて追記
  • 16/09/08 4ヶ月使ってみての感想を追記

Notes:

  1. もっとも,高速通信オフ時は3日で366MBまでという制限があります。 通信規制はありますか? | IIJmio
  2. Raspberry Pi (1) B+ の現在の価格より
  3. SUGOI HUB 付属 AC アダプタの出力は 5V2A なので数値上は USB ハブから余裕を持って取れそうなのですが,なぜか正常動作しませんでした。気になりますが,面倒なので今回は調べません。
  4. 一般的には前者が多く,OCN 系や Biglobe 等はグローバル IP らしい。Interlink のように安価に固定 IP を提供しているところもあります。
  5. USB – Raspberry Pi Documentation
  6. マニュアル p.120
  7. Raspberry Piブログ : [コラム] Raspberry Pi Model B+でUSBの最大出力を1.2Aにグレードアップしよう, なお safe_mode_gpio=4 は古いバージョンでのオプションで,互換性のために書かれているだけのため,最近のバージョンを使っている場合は max_usb_current=1 だけで大丈夫です。
  8. Raspberry Pi • View topic – RPi 3 – Very poor wifi performance, 16/4/19 Raspberry Pi Foundation エンジニアの Dom 氏曰く,”1.2A is the default and max_usb_current has no effect on Pi3.”
  9. 価格.com – 『バージョンV10eで安定化』 docomo L-02C [レッド] のクチコミ掲示板
  10. L-02C SIM(UIM)カードが認識しなくて困っていたが解決のようです|ぽちびろの日々ツイート
  11. ディスプレイに繋いでも CUI のみで VRAM はほぼ使うことはないのでがっつり減らしてよい。その分,システムに割かれるメモリ容量を増やせる。ただ,最小値は16MBらしい。 RPiconfig – eLinux.org – http://elinux.org/RPiconfig
  12. 設定がフラッシュメモリに保存されます。
  13. さすがに LTE 回線を自宅回線にしようというニーズはまだ殆どないようで,安定しそうにない構成だったり,重要な情報が抜けていたり,中には明らかに問題のあることをしている記事も散見されますので,実際に作業を始める前に検討する必要があります。
  14. なお part2 は結局まだ書けていません。音声入力はやたら手間がかかる割にうまく行っても他の入力手段より実用上快適にはならないということがわかったので pending という名の放置中です。そのうちやる気と時間がある時にでも……
  15. 犯罪に巻き込まれたような場合にログが残ってなかったら困るな,という程度
  16. またやっちまった。
  17. 定期的に ping を飛ばす手順はこちらを参照のこと。 常時接続の維持 (PING コマンド)
  18. Controlling a USB power supply (on/off) with linux – Stack Overflow
  19. kernel – Turning off power to usb port. Or turn off power to entire usb subsystem – Unix & Linux Stack Exchange
  20. Power OFF and ON USB device in linux (ubuntu) – login: root
  21. 細かく指定しようとするとエラーが出る。
  22. そこに挿しているデバイスではなく,ハブを見ることに注意してください。
  23. Minecraft Pi もできたので,Bとはいえ改良後のリビジョンのはずなのですが……
  24. ただし,手数が増える分 CPU 負荷はやや増えるはずです。
  25. 詳しくないですが,USB HDD エンクロージャも USB 3.0 のものはどれも電源連動に対応していますし,規格上対応が必須になるなどしたのではないか? という気がします。

ドメインとサーバの移転

 ドメインとサーバを移転しました。MiniBird の一番下のプラン(月250円)ではあるものの,元々が StarDomain の無料オマケサーバだったので大きなグレードアップです。とはいってもアクセス数増加への対応だとか応答速度向上だとかそういうのではなく,「今までのドメイン名を別の用途に使いたい」というきわめて消極的な理由からの移転で,サーバを変更したのはオマケサーバの SQL データベース付きプランの新規割振が終了しているというだけの理由からだったりします。無料で MySQL 付きのサーバもいろいろあるんですが,どれも広告が出るんですよねえ。広告はあまり好きじゃないんです。それから,古すぎるなどの理由で役に立たない記事は今回ついでに公開を終了しました。
 そのうちまた移転しないとも限らないので,今回したことのメモを残しておきます。
 なお,はじめに断っておきますが,今回私が試した「WordPress 標準のエクスポート機能」は賢明な選択肢とは言えません。よほどの PC アレルギーでもない限り,FTP クライアントでファイルをコピーして phpMyAdmin でデータベースをインポートするやり方のほうがよほど早く終わるでしょうし,サイトの規模が大きくなったり数が多くなったりしても使えるテクニックです。現状,WordPress 標準のエクスポート機能は,扱えるものが少なすぎてサーバ移転の手段としてはあまり実用的ではないと思います。というか,そもそもそういう使い方は主だった使い方としては想定されていないのかもしれません。

1, 古いサーバの WordPress にログインし,サイドバーの「ツール>エクスポート」を開き,全てのデータをエクスポート・ダウンロード。
2, 新しいサーバに WordPress を導入し,「ツール>インポート」を開き,「WordPress」を選択。初回は「WordPress インポートツール」の導入を求められるのでこれを導入し,再度同じ操作をする。先ほどダウンロードした xml ファイルをアップロードする。「添付ファイルをダウンロードしてインポートする」にチェックを入れると,画像などを古いサーバから自動でダウンロードして展開してくれる。記事中のリンクも自動で書き換えてくれるのでリンクが切れない。ただし,画像をページに貼り付けていたはずが単なるリンクになっているなどの問題も一部あった。そのほか,アカウントの統合・移行 1も一括してできる。
3, 新しいサーバにプラグイン類を導入して設定をする。基本的に全手動なので面倒。今回は数が少ないので手でできたけれど,規模が大きくなると厳しそう。
4, 新しいサーバの設定変更やテーマの選択・カスタマイズを行う。これも全手動。
5, 検索エンジンやはてなブックマーク等からのリンクが切れないように,古いサーバから新しいサーバへのリダイレクトを設定する。WordPress のプラグインでもリダイレクトを行うものがあるが,サッパリ消してしまいたいので .htaccess でやる。
中身は以下(他の項目より上に追加)。

RewriteEngine On
# 書き換えを有効化
RewriteBase /
# 設定対象のルートの設定,普通は標準で / なので省略可
RewriteCond %{REQUEST_URI} [0-9]{1,6}
# / 以降が数字1~6桁で構成される URI へのアクセスのみを対象にするということ。
# それぞれの環境のパーマリンクの構成に合わせて正規表現で記述。
RewriteRule ^(.*)$ https://oppekepe.org/$1 [R=301,L]
# 今回はパーマリンクがドメイン名以外そのままなので,RewriteCond の条件に当てはまるもの全て ^(.*) を
# 変数に入れ,新しいドメイン名の後ろに付加して,そこへ転送するようにする。
# R=301 はステータスコードを 301 (Moved Permanently)にするということ,L はループ防止のおまじない。

以上で完了です。
しかし,StarDomain オマケサーバが多機能すぎたせいもあってか,有料プランにはしたもののあまり感動がありません。うーむ,年0円 vs. 年2430円(ポイント最大適用)か……

Notes:

  1. たとえば A ,B というユーザがそれぞれ作成した記事について,C というユーザが作成・保有したことに変更するなど

自宅サーバのメリット・デメリット ~VPS と比較して~

自分用メモ。
自宅サーバを運営しといてナンだけど,自宅サーバのメリットらしいメリットが本気で思いつかない。さくら VPS のステマとか言われそう。誰か自宅サーバならではのメリットを思いついたら教えてください。
あ,ちなみにこのサイトは自宅サーバではなくレンタルサーバでのホスティングです。

デメリット

  • コストが高い
  •  自分の環境=Interlink 1 IP(月1,296円) + Star domain .net 独自ドメイン(年850円) + 標準的なサーバとルータ(計45 + 10 = 55W として電気代月1,026円・ハードウェア代計2万,4年間使えるとして月417円)の場合で,月2,810円,年間33,714円もの費用がかかります。ISP を i-revo(月525円。ただし転送容量制限が非常にキツいです)に,サーバを ECS LIVA(ASCII.jp のレビューによるとアイドル3W,月約56円・ハードウェア約1.8万,2年間使えるとして月750円)にしてルータをマルチセッション対応かつポリシールーティング対応のものにし通常使用のセッションと共有にすれば月1,402円,年間16,824円まで圧縮することができますが,VPS の方が高スペックで安価(「さくらの VPS」で仮想3コアRAM2GBディスク200GBのプランが月1,396円)です。ある程度大規模になり,大量の物理回線がある環境であれば自宅サーバの方が割安になるのかもしれませんが,まあ個人が趣味で運用する「自宅サーバ」の範疇としてはありえない話でしょう。
    2014/9/18追記:いまさら不備を発見。「標準的なサーバ」というのは「自宅サーバとして標準的なサーバ」という意味であり,具体的には富士通 PRIMERGY TX100 S3P で,CPU Pen G640,RAM 6GB,HDD 1TBx2 という構成で使っていました(過去形。現在停止して WWW のみレンタルサーバで運用中。そのうち VPS に乗り換えるかも)。またどうやら最近は「安鯖」も1万円以下では出なくなっているようなので,自宅サーバの初期投資費用は+1万くらいになるかも。
     見えないコストとして,室温上昇による空調費アップ,火災などのリスク(滅多にあることではないでしょうがこのリスクが無視できるほど低いと言い切ることのできる理由も見当たりません)などもあります。
     つまり,コスト面では,自宅サーバを選ぶ理由は一切ありません。

  • 可用性・信頼性が低い
  •  気をつけていても電気の使いすぎでブレーカーを落とすことはありますし,そうでなくても家庭用電源はまれに瞬断を起こします。ろくな検証をしていない自宅サーバ環境ではディスクのホットスワップは避けたいですので RAID を組んでいるディスクの1台が故障すればサーバの電源を落として作業したいですし,生活空間に置くものですからケーブルをひっかけて抜いてしまうことなどもあるかもしれません。サーバルームに並べられた高信頼性サーバで安定して運用されている VPS からすれば全く比べものにならないほど止まりやすいシステムだと考えるべきでしょう。
     つまり,可用性・信頼性の点から見ても自宅サーバを選ぶ理由は一切ありません。

メリット

  • トラブル対応がより容易(かもしれない)
  •  リモートアクセスが不能になるような大失敗をしても容易に復旧ができます。そのため,自分の使ったことのないソフトウェアやベータバージョンのソフトウェアなども気兼ねせずどんどん使えます。ただし,普通は VPS でもブラウザ越しにシリアルコンソールからアクセスできる機能が提供されているので,実際のメリットは微妙なところです。

  • ハードウェアの知識も(本当に少しだけだけど)付く
  •  タワー型サーバを使用する場合のみ,かつ本当に少しだけではありますが,VPS とは違いハードウェアいじりめいたことも楽しめます。

  • リソース制限が(やや)ゆるい
  •  個人が趣味で運営する程度の規模では VPS でもリソースの使いすぎで規制されることは考えにくいですし,ましてや規制される水準のリソースが恒常的に必要となる可能性なんてほぼありえないとは思いますが,自宅サーバであれば CPU やディスク I/O を制限なしで利用できます。ただし,回線の転送容量については,(ISP も VPS も具体的な数値は示されていないものの Interlinkが30GB~?/日に対してさくらレンサバのスタンダードプランが80GB/日であることから推測するに)VPS の方が大幅に制限がゆるいものと想像されます。

  • けなげに働くサーバの姿を見ると和む
  •  私はサーバを玄関に設置しているのですが,一日を終え玄関ドアを開けて帰宅するとサーバが HDD アクセスランプをチカチカと光らせながら出迎えてくれます。雨の日も風の日も回線メンテの日も,怠けずたゆまず一心に働き続ける自宅サーバ。その姿を見ると,現代社会の矛盾に耐えるうちに汚れきってしまった私の心に清らかなそよ風が吹き,僕も一生懸命頑張ろう,24時間は無理だけど1日8時間くらいは頑張ろう,と健やかで前向きな気持ちになれます。