家庭にLinuxサーバーがあったら何をさせられるか、考えてみました。ごく当たり前のことから、こんなことができたらよいのに、というのまでいろいろあります。
今や、ほとんどのLinux distributions には、Apacheがインストールされていますから、それをアクティブにするだけで使えます。もちろん、htmlは自分で作らなければなりません。実はコンテンツを作るのが一番大変です。
最近のapacheでおもしろいのは、virtual host機能ではないでしょうか。
二つ以上の名前(URL)のhttpサービスを一つのサーバーでする機能です。
たとえば、このサイトでは、matsui.dip.jp、ruriko.jpn.ph,
mino.dip.jp など、複数の名前(URL)のwebサイトを一台のサーバーで実現しています。これらは、いずれもIPアドレスは同一ですが、ホームページの置き場所が違えてあります。
ホームサーバーのwebサービスでは、外部の不特定多数に情報を公開するのと同時に、家族や親戚縁者、同窓会や自治会など、限られたコミュニティでの情報共有が重要なことも多いでしょう。そんなときでも、情報共有のプロトコルには、httpを使うのがもっとも確実でしょうから、.htaccessを使ったapacheのbasic認証の機能はとても重宝しています。webDavでファイル共有もいいかもしれません。さらにセキュリティが必要であれば、httpsを使います。Authorityの発行する証明書がないので、乗っ取られないとも限りませんが、ローカル情報にそんなにめくじらたてなくても。
httpd.confの設定は、変更するところはそんなにありませんが、sendmail.cfほどではないにしても、独特の記法に慣れるのにはしばらくかかります。webminで設定することもできます。
webで凝ったことをやるにはCGIが便利です。PerlじゃなくてLispで書いてFastCGIにすると良い話は別途書きましたが、カウンタや掲示板など、googleで検索すると、perlで書いたCGIプログラムがたくさん見つかります。スケジュールを書き込んだり、調整できるcgiがあるとよいですね。cybouzなど、有料のものはけっこういいものがありますが、フリーソフトは、満足なものにまだ巡り会っていません。
CGIの中で秀逸なのは、Wikiと呼ばれるソフトです。ハワイのワイキキ海岸を思い浮かべる名前です。たとえばこのページに、編集というボタンが付いていて、それをクリックするとhtmlを知らなくても、簡単にWebに情報を書き込めるようなソフトです。掲示板と似ていますが、古い書き込みが流れていってしまうのではなく、一つのページをみんなで作っていくようなときに便利です。WiKiにもいろいろありますが、私は、schemeで書いてあるWiLiKiというのを使っています。
Namazuを使うとよいことになっています。
AWSTAT (Advanced Web STATistics) というのは、Webサイトへのアクセスの統計を取るソフトです。実際は、/var/log/httpd/acdess.log を解析して、月ごと、曜日ごと、人気ページランキング、どのドメインからアクセスが来ているか、ブラウザは何が多いか、どんなnet robotが来訪しているか、などの統計を表示してくれます。カウンタを付けなくても、これでだいたいの状況を知ることができるでしょう。
NFSは、Sunが始めたネットワークファイルシステムで、1980年代の終わりには、その便利さに感心しました。ただし、最初は、コピーしたはずのファイルが空っぽ、というような不信感がつきまとっていました。その後、大いに改善が図られましたが、LinuxのNFSは、私は未だに不信感を持っています。大きなファイルあるいは多数のファイルのコピーがcompleteできないことがときどきあります。業務用のファイルサービスでは、SunのNFSを使わないといけないんじゃないかな。
ファイル共有では、転送速度も重要ですが、複数ユーザが共有する場合のロックが難しいのだろうと推測します。その点は、Windowsのファイルシェアも相当に怪しいものです。原因はよくわかりませんが(ワードなどで同じファイルを開いたりするせいか?)、仕事で使っていたWindows
2000 professional server は、一週間に一度くらい反応がなくなりました。他のプロセスは正常に動いているのですが、ファイル共有だけストップしてしまうことがたびたびありました。
sambaは、Linux (unix)が提供するWindows用のファイル共有サーバーです。Windows用のファイルサーバーを置くときに、サーバーがWindowsでなくてもよい、という選択肢があるのは、規模が大きいユーザーにはコスト的にとても重要です。品質についてはよくわかりません。前段で述べたような同じファイルを複数人でアクセスする場合のファイル共有の問題が、LinuxのSambaでも同様に発生するかどうか、確認していません。そのほかに、sambaでは、日本語ファイル名に問題があると言われることがありました。実際のところは、2001年くらいの版からは、Sambaの日本語ファイル名対応はほとんど完全だと思います。unix上での日本語ファイル名はEUC、samba
(Windows側)では、shift_jis になるような変換を設定します。
httpdの設定は、swatを使うとwebで簡単にできます。というのは表向きのことで、swatを開くと何のことかよくわからないパラメータがたくさんありますから、やっぱりとまどう人が多いでしょう。
大きくなったディスクを何に使うかと言えば、私の場合、デジカメの写真に一番スペースを食っています。デジカメの他、フィルムからスキャンした昔の写真もあります。ビデオが大半を占めていた時期もあるのですが、最近、ビデオはHD-recording
DVDの方に譲りました。
写真の保存性については、デジタル化してしまえばかなり安心できます。jpeg圧縮が永遠かどうかはわかりませんが、デジタル化してしまえば、後は何とでもなります。これがデジタル革命のすごいところ。ただし、デジタル記録も磁気や電荷などアナログっぽい情報で記憶されていますから、ときどきリフレッシュが必要です。
脱線ですが、写真については苦い思い出があります。20歳くらいのころ、実家が水害に遭い、中学、高校のころのほとんどの写真を消失しました。戻ってきたものも惨憺たる状況でした。色素が水に溶け出したりしていました。その後、海外旅行の際に求めた絵画のスライド写真も、水害にあったわけではないですが、l20年もたつと色が大変化しています。最近の技術ではそんなに経年変化を起こさないのかもしれませんが、化石じゃないですが、情報を長い年月留めておくことは、なかなかに難しいのだと実感しています。一方で、そうやって薄れていく昔の記憶は、そのまま薄れさせておくのがよい、という気もします。またまた別の話ですが、昔の人々の墓がずっと残っていると、地上の面積はどんどん墓で埋まってしまいます。北朝鮮じゃないが、ときどき水害でも起きて洗い流してくれているから、現在の活力が失われずにすんでいるのかもしれません。
デジカメの写真を読み込むには、USBにカメラをつなぐか、やはりUSBポートやPCMCIAポートにフラッシュメモリなどを差し込まなければなりません。カメラ内のメモリがディスクとしてマウントされます。自動的にマウントするには、murasakiを使います。これは割と簡単です。
Windowsのexplorerは、フォルダ中の画像をアイコンにして表示してくれるような機能がありますが、Linuxではそうはいかないようです。というか、私はktermを開いているだけなので画像が見えるはずがありません。もっとも、sambaでWindows,から画像を閲覧するのであれば、見太郎でもvixでもいろんなソフトがあります。Linuxでは、gphotocol
なんていうソフトを使ったりします。
写真画像の次に多いのは、CDなどをrippingしてためたWAVおよびそのmp3,ファイルです。もちろんこれらを一般に公開しているわけではありませんが、自分は世界中どこを旅していても、個人的使用であり、なおかつインターネットにつながる限り、これらのうちに置いてある音楽ファイルを手元のmp3プレーヤにコピーして使える、というのはすごいことだと思います。
WAVファイルは場所をとるので消してしまいたいのですが、mp3への圧縮はどのくらいが適切かがわからないとなかなか消せません。一応、160kbpsでとっておいて、必要に応じてより低いビットレートに変換したりしますが、変換に時間がかかるので、容量をたっぷりとっておきたいところです。
ファイルバックアップのないファイルサーバーというのは定義に反すると言ってもよいでしょう。しかし、ホームサーバではなかなか難しいところです。昔は、ストリームテープにバックアップしていました。「おおー、これ一本で60MByteか!」などと喜んでいた時期は長くは続かず、8mmビデオのテープに1GB、DATに4GBとかいうような容量にすぐに進んだような記憶があります。その後どうなったのかよくしりませんが、2000年くらいからは、速い、安い、安全、の一番はディスクになってしまったのではないかと思います。その一つの表れがRAIDでしょう。Redundant
Array of Inexpensive Disksという言葉がそれを表しています。
ところが、RAIDはなかなかの曲者です。私は2回くらいひどい目に遭いました。RAIDを導入するときは、一度に2−6台のディスクを同時に動かし始めます。RAIDをずっと使っていると、2,3年で故障が出ます。1台の故障であればペアになったディスクが補えるのですが、2台以上になると場合によっては復元不可能になります。1台が故障して、すぐに交換すればよいのですが、いろいろな理由で1,2週間は遅れることになります。そして、その魔の1,2週間の間にもう一台が壊れてしまうのです。考えてみれば、これらのディスクはすべて同じ時に納入されて同じ日に稼働始めた同じような特性のディスクのはずで、某国のたぐいまれなる高水準の品質管理のおかげで、同じ年月で故障するように仕組まれているのです。
もう一種類の情けない経験というのは、2,3年たって、1台のディスクが壊れ、その代替品を注文したがすでに製造中止、というものです。ディスクの性能の進化を考えれば当然でしょう。ですから、RAIDを安定に運用しようと思ったら、導入時にそれと同数くらい同種の予備ディスクを購入しておくべきです。同じ容量でも機種が違うと動かないことが多いので、必ず同じ時期に同じ種類のものを買っておくべきです。そして、前記のようなことが起こらないように、ときどき、全く不定期に1台ずつディスクを交換しておくのです。
しかし、これも実はとても空しいことです。2,3年もするとディスクの容量は数倍から10倍になります。世の中が100GBのときに、10GB,のディスクを交換するのはがっくしきます。そしてたいていは、「1台の10GBディスクが壊れた。いいチャンスだからこの際100GB×6のraidに組み替えよう」というようなことになります。そして、そのために予算を獲得したり、注文している間に、残りのディスクが壊れるのです。とにかく、RAIDに全幅の信頼を置くのは考え物で、やっぱりバックアップが必要です。
それで、古いLinuxマシンに多めのディスクを付けてときどきネットワーク越しにコピーすることにしています。この予備マシンは、時々しか立ち上げませんので、停電やらウィルスやらでアタックされる確率も相当に低いはずです。サーバーの中の主なファイルが写真や音楽で、常に書き変わっている容量は少ないので、バックアップも短時間ですし、万が一事故が起こっても大したことはないだろうというもくろみです。
CVS Concurrent Versioning System は、複数の人が同時にソフトウェア開発をするときに、ソースプログラムの整合性をとるために作られたシステムです。しかし、別に複数でなく一人で使っても便利ですし、プログラムの開発だけでなくドキュメントの作成などにも使えます。
CVSでは、Repositoryと呼ぶソフトウェア置き場を使います。複数の人が同じソフトウェアをいじくる場合は、どこか共通の場所が必要ですから、ファイルサービスをするサーバーがその場所を提供するのが都合がよいでしょう。NFSでアクセスしても良いでしょうが、CVSには、独自のプロトコルで、リモートのRepositoryを共有する機能があります。
メールサーバーの立ち上げには苦労しました。標準でpopperやsendmailは入っているのですが、そのままでは共にパスワード認証も暗号化もないのでセキュリティ上、問題があります。APOPとSMTP認証を入れる方がよいでしょう。SMTP認証を入れずにsendmailを立ち上げたところ、三日目くらいにもうSPAMメールの踏み台にされていることがわかり、早速ポートを閉じました。敵は機械的に絨毯爆撃で探索をかけてきますから、うちのようなマイナーなサイトは誰も注目しないから大丈夫なんてのは思い過ごしで、インターネットの表通りに出た以上、必ず攻撃の対象にされています。
否定的なことを書きましたが、メールサーバは、最近身にしみてありがたみが出てきたサービスです。
まず、メールは、Web以上に、信頼性、継続性が重要jなサービスです。web以上に、というのは、webはURLが変わった場合でも検索エンジンで探せますが、メールの場合は、検索が難しいからです。ホームサーバにメールサービスを載せたとしても、会社の同僚や取引先に教えるわけではなく、まずは、借金取りなど、できたら連絡がつかないようになって欲しい相手に教えることでしょう。
大事な人にアドレスを教えるには、サーバーが十分に安定していること、今後も末永くメンテナンスしていく自信がなければなりませんね。ときどき心配になるのですが、海外に一年出張、などということになったらどうするのでしょう?さすがに空き家でサーバーをつけ放しにするわけには行きません。サーバーを抱えて持っていくのでしょうか。
ホームjメールサーバでは、メールアドレスをいくらでも作れる、mail aliasもいくらでも作れる、メーリングリストもいくらでも作れる、という御利益があります。
最近のメールで困ったことに、添付が増えて容量が大きくなること、迷惑なSPAMが大量に送られてくること、があります。添付は、10メガバイト級は日常的です。へたなプロバイダに頼っているとスプールがあふれてしまいますが、ホームサーバなら、数ギガバイトくらい平気でしょう。
SPAM対策には、procmail によるフィルタリングが有効なことがあります。PCのメールクライアントには、メールアドレスや件名等のヘッダ情報を使ったメッセージのフィルタリング、振り分け機能の一つとして、これらからspamとわかるメールを廃棄する設定ができます。これは、メールクライアントで行うのが普通ですがprocmail
を使うと、メールの(中継)サーバにその設定ができます。これはとても大事なことです。というのは、携帯電話(別記事に書きましたがDDI
PocketのPHS)にメールを転送するようにしているからです。だいじ(そうに見える)メールだけをPHSに転送しています。これは非常に重宝な機能です。.procmailrc
のサンプルは以下のようになります。
# forward to PHS if a message is sent from 会社と家族,
# not an html message,
# and the size is small enough.
:0c
*^From:.*(会社のドメイン|家族のアドレス|ホームサーバドメイン).*
* ! \<html\>
* < 5000
! 自分@PHSのドメイン
:0H
# kill messages sent by notorious bulk mailer programs
* ^X-Mailer:.*(jpfree Group Mail Express|EVAMAIL|Foxmail|JiXing mailer|007 Direct Email Easy) /自分のホームのスプール/trash2/
:0
/var/mail/自分のスプール
サーバーがクラッキングやウィルスのおかげでぶっこわれないよう、ファイアウォールを設けたりいろいろな監視をする必要があるのはもちろんですが、それとは別のサービス。
うちの中、玄関などにwebカメラを仕掛けて置いて、不法侵入を監視します。ソフトウェアよりも、ケーブリングが大問題です。外に置く場合は、その電源も含めて防水対策や、そもそもカメラそのものの盗難対策が必要です。
サーバーのハードウェア的な健康状態は、CPUやケース内の温度でかなりわかります。火の気が心配なので温度計を付ける、というのはどうでしょうか?夏や冬は、人がいると冷暖房を使いますから、温度を調べるだけで人がいるかどうか判定できたりもします。
家庭内に何台かのコンピュータ、それもLinuxがあるのなら、DNSを上げておくとよい。台数が少ないうちは、/etc/hostに書き込んでおくので十分ですが、だんだんわからなくなってきます。DHCPだけで生活できているうちは不要です。
Samba 2.2.1aから、Windows,のドメインをサービスする機能が付きました。小規模な実験ではうまくいくことを確認しましたが、仕事で使っているネットワークをLinuxベースのdomainにするのはためらわれます。もし失敗したらどうするのか、ということもありますが、ワークグループで十分でないか、ということもあります。特に、モバイルで使うことの多いノートPCにとっては、出張先でホームサーバーに接続できないこともありますから、ワークグループのままで良いじゃないか、ということになります。
ワークグループの参加メンバーの名前をネットワーク内で流通させているのがWINSだと思います。LinuxのSambaの設定でWINSサーバーもさせられます。
データベースといっているのは、MySQLやPostgreSQLなどの、たいていはrelational databaseと呼ばれるものです。家庭にデータベースを持つ人など、普通はいないだろうと思います。しかし、webサービスによっては、データベースを使いたくなることがときどきあります。それにしても、SQLなんてへんてこりんなものを使うのはいやでしょうねぇ。このごろのdistributionには標準で入っているので、立ち上げるのは簡単です。
未着手。