2009年4月アーカイブ

Macmini収納台&キーボード収納台

日曜日は、プレコさんの稚魚とアーリーの稚魚を立て続けに発見してしまい、隔離しなきゃっっ!!っつって、大わらわでてんてこ舞い、・・・・・ってゆー夢を見た。すげぇ疲れた・・・。

朝5時に目が覚めてしまい、明るくなってきてるし、起き出してバナナでも食って、さぁ何しよう、ってことで、端切れ細工でMacminiの台とキーボード収納台を作った。
macmini02.JPG
















Macmini収納台は、2x2の切れ端を2つと1x2の切れ端をネジ止めしただけ。これを2つ作ってMacminiの前後でまたがせただけ。
キーボード収納台は、1x2の切れ端を脚にして、1x3の切れ端をスノコ状にネジ止めしただけ。
ちなみにMacmini収納台(前後)とキーボード収納台は固定されていない。ほとんど積み木ですなw。
これで、娘がマウスだけでゲームをやるときにキーボードが邪魔にならなくなった。

macmini01.JPG
















ちょっとディスプレイの位置が高くなり過ぎたかな・・・。Macmini収納台の脚を短くしようかな。
写ってはいないが、このあとPC用スピーカーを持ってきて、サーバに溜め込んである音楽を聴けるようにした。

結論から言うと、こうなった。

Gmail(Google Apps無料版)でメールを全て受信する。
  ↓
fetchmailでPOP3で自宅サーバに取り込み。
  ↓
postfixで各ユーザに配信する。
  ↓
davecotがIMAP4でサービスする。
  ↓
各自メールクライアントでIMAP4で見る。

こうすることで、自宅サーバが死んだとしても、Gmailが受信しておいてくれるし、そんなときはGmailのWEBメールで自宅サーバ復旧までしのぐ事が出来る。
2重化というかは微妙だが、とにかく自宅サーバが死んだとしてもメールを受信し続けることが可能になった。
ここで、Gmailに大きく依存することになるが、自宅サーバ1台に比べれば、GmailはMXレコードが7個もあるので信頼性は比べ物にならない。

さて、レシピと行きましょうか。

まずは、postfix、dovecotをインストール&設定。方法の記述は端折るw。

次に、Google Apps標準版(無料)を申し込む。ドメインを持っていることが必須だ。
申し込み方法、設定方法は下記。

  1. Google Apps標準版を申し込む。
    • 管理者を選択して、自分のドメイン名を入力。
    #このとき、情報発信用のドメイン名を入力した。
    #家族用(メール用)ドメイン名は後でエイリアスとして登録した。

  2. 申し込みが終わったらGoogle Appsの管理画面で設定を行う。
    • エイリアスのドメインに家族用ドメインを登録する。
    • 「ドメインの所有権を確認」する。
    「HTMLファイルをアップロード」を選択して、ドメイントップに指定されたようにHTMLファイルを作成、設置する。
    これは、メインのドメインとエイリアスのドメインの両方で行う必要がある。
    • 自宅サーバに登録してあるメールアカウントを同じように全て登録する。
  3. DNSの設定を行う。
  4. 利用しているDNSのレコードを変更する。
    ちなみに、当ドメインはVALUE-DOMAIN.COMで取得したので、ここのDNSを利用している。
    DNSの変更が完了したら、Google AppsのMXレコード変更画面で「指定された手順を完了しました」ボタンを押す。

以下、VALUE-DOMAIN.COMでのDNS設定変更

a @ [IP address]
mx @ 10  ★この行を削除★
★以下を追加★
mx ASPMX.L.GOOGLE.COM. 20
mx ALT1.ASPMX.L.GOOGLE.COM. 30
mx ALT2.ASPMX.L.GOOGLE.COM. 30
mx ASPMX2.GOOGLEMAIL.COM. 40
mx ASPMX3.GOOGLEMAIL.COM. 40
mx ASPMX4.GOOGLEMAIL.COM. 40
mx ASPMX5.GOOGLEMAIL.COM. 40

ちなみに、MXレコードにGoogle以外のものが設定されていると、2日後にGmailが使用できなくなる。
筆者も一度は自鯖をプライマリMXに、GoogleをセカンダリMXに指定してチャレンジしたがあえなく撃沈。
ちなみにちなみに、有料版のGoogle Appsを利用するとセカンダリMXに指定できるらしいが、1アカウントあたり年額6000円と高額だw。

次、Gmailの設定。
うちではGmailをSMTPに使っている。なぜなら、自鯖がスパムの踏み台にされると嫌だから。お手軽だから。
で、GmailのSMTPを使い、複数ドメインのメールアドレスを管理する場合、下記を設定しないとFromがGmailのアカウントに書き換えられてしまう。
#ただし、SenderがGmailのアカウントで固定で追加されてしまう。そのため、多少見られても構わない情報発信用メールアドレスをGmailアカウントに設定するのが吉。
  • 「アカウント」-「名前:」-「メールアドレスを追加」でにエイリアスに設定したドメインのメールアドレスを追加する。
  • 「アカウント」-「名前:」-「メッセージの受信時:」は「メールを受信したアドレスから返信する」を選択
  • 転送 無効
  • POP 有効 & POPを使用する場合:すべてのメール、メールのコピーを削除(これを設定しないとクライアントから削除できないらしい。)
  • IMAP 有効

参考:いそっちノート [tips] Gmailで独自ドメイン(Value Domain)を使う


次にfetchmailの設定。
まず、/etc/fetchmailrcというファイルを下記内容で作成する。
set postmaster root
set nobouncemail
set logfile /var/log/fetchmail.log

defaults
protocol pop3
flush
no mimedecode
smtphost localhost

poll pop.gmail.com
port 995

user [pop account1] with password [password1] is [local user1] here ssl
user [pop account2] with password [password2] is [local user2] here ssl
......以下、家族分
GmailのPOP/IMAPはSSL経由でしかアクセスできないが、sslオプションはuser毎に指定する必要があるらしい。

下記コマンドで設定を確認。ログがうじゃうじゃ出てきます。
fetchmail -v -f /etc/fetchmailrc

設定が確認できたら crontab -e で3分毎に取得するよう設定。
*/3 * * * * fetchmail -f /etc/fetchmailrc
追記:2009/06/21
/etc/fetchmailrc の所有者でないとこのコマンドは動かない。
fetchmailユーザってゆーのが勝手に出来てて、それが所有者になっている。
ということで、crontab -e への書き込みは、fetchmailユーザの方で行う。
また、/var/log/fetchmail.log の所有者もfetchmailユーザになっているか確認する。

参考:
以上。

自宅サーバ ~バックアップ~

データファイルのバックアップは、pdumpfsとpdumpfs-cleanを使用して差分バックアップ&世代管理しながら取っていくことにする。

参考:Ubuntu/pdumpfsで世代別バックアップ

まずは、apt-get で pdumpfs をインストール。使い方は簡単。
pdumpfs [バックアップ元ディレクトリ] [バックアップ先ディレクトリ]
すると、バックアップ先ディレクトリに年/月/日のディレクトリが構築され、その中に差分バックアップが作られていくとのこと。

次に、pdumpfs-clean。pdumpfsが取ったバックアップから古いものを削除して行ってくれるもの。
詳細は本家サイトへ→pdumpfs-clean

wget & chmod で pdumpfs-clean を /usr/local/sbin/ にインストール。使い方は簡単。
cd /usr/local/sbin
sudo wget http://tach.arege.net/software/pdumpfs-clean/pdumpfs-clean
sudo chmod 755 pdumpfs-clean
pdumpfs-clean [バックアップ先ディレクトリ]
すると、バックアップ先ディレクトリの古い日付のものを削除します。
デフォルトでは、最近7日分、毎週日曜日を6週間分、毎月1日を6か月分、毎年1月1日を2年分残します。
pdumpfs-clean --keep 5Y12M18W14D [バックアップ先ディレクトリ]
とすると、最近14日分、毎週日曜日を18週間分、毎月1日を12か月分、毎年1月1日を5年分残します。

さて、最後にMovable Typeで使っているPostgreSQLのデータベースをバックアップ。
世代管理まで行うスクリプトを書いてます。
#/bin/sh

##################################################
# PostgreSQL database backup script
#
# In this script, pg_dump command execute by "postgres" user
# Dump to DB_NAME.YYMMDD.dump
# Delete expired dump file
# Output log file.
##################################################

##################################################
# Settings
PG=/var/lib/postgresql/
PGDATA=$PG/8.3/main/
PGBIN=/usr/bin
PGLIB=/usr/lib
PATH="$PATH":$PGBIN
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":$PGLIB
export PGLIB=$PGLIB
export PGDATA=$PGDATA

# space separated value: databases and backup directories (full path)
DB_NAMES="movabletype"
BAK_DIRS="/backup/postgresql/daily"
WK_DIR=$PG

# log file path
LOG="/root/pg_dump_daily.log"

# number of backup file
BAK_NUM=15
##################################################

##################################################
# Main routine
TODAY=`date +%Y%m%d`

echo "@@@ Start Database Backup [ `date +%Y/%m/%d` ] @@@" | tee -a $LOG

# backup each "DB_NAMES"
for DB_NAME in $DB_NAMES
do
CNT_DIR=1
CP_SRC=""
CP_DST=""

# backup to each "BAK_DIRS"
for BAK_DIR in $BAK_DIRS
do
if [ $CNT_DIR -eq 1 ]; then

# create dump command
COM="pg_dump -S postgres -Fp $DB_NAME"
if [ $DB_NAME = "ALL" ]; then
COM="pg_dumpall -S postgres"
fi

# execute dump command
echo "[" `date +%Y/%m/%d_%H:%M:%S` "] $COM [start]" | tee -a $LOG
DUMP_FILE_PATH=$WK_DIR/$DB_NAME.$TODAY.dump
su -l postgres -s /bin/sh -c "$PGBIN/$COM > $DUMP_FILE_PATH | tee -a $LOG"
mv $DUMP_FILE_PATH $BAK_DIR
echo "[" `date +%Y/%m/%d_%H:%M:%S` "] $COM [done]" | tee -a $LOG
CP_SRC=$DUMP_FILE_PATH
else
# copy dump file to other BAK_DIRS
CP_DST=$BAK_DIR/$DB_NAME.$TODAY.dump
echo "[" `date +%Y/%m/%d_%H:%M:%S` "] Copy dump file to $BAK_DIR [start]" | tee -a $LOG
cp $CP_SRC $CP_DST | tee -a $LOG
echo "[" `date +%Y/%m/%d_%H:%M:%S` "] Copy dump file to $BAK_DIR [done]" | tee -a $LOG
fi

# delete old backup files
LS=`ls -r $BAK_DIR/$DB_NAME.*.dump`
CNT=1
for FILE in $LS
do
if [ $CNT -gt $BAK_NUM ]; then
rm -f $FILE | tee -a $LOG
echo "[" `date +%Y/%m/%d_%H:%M:%S` "] Delete expired dump file [$FILE]" | tee -a $LOG
fi
CNT=`expr $CNT + 1`
done

CNT_DIR=`expr $CNT_DIR + 1`
done

done
echo "@@@ Finish @@@" | tee -a $LOG
##################################################

Settings セクションを書き換えて、火曜0時~日曜0時に取る分(上記スクリプトそのまんま。daily。)と月曜0時に取る分(「daily」を「weekly」に変更したもの。weekly)を作ります。
PGなんとかというPostgreSQLの環境変数はそれぞれの環境に合わせて変更してください。
DB_NAMESパラメータにバックアップ対象のデータベース名をスペース区切りで入力します。
BAK_DIRSパラメータにDB_NAMESに指定したデータベースに対応するバックアップ先ディレクトリをスペース区切りで入力します。
BAK_NUMパラメータで指定した日数分が保持されます。

ここまでのバックアップ処理を crontab -e で登録。
0  0 * * 1   pg_dump_weekly.sh
0  0 * * 2-6 pg_dump_daily.sh

0  1 * * *   pdumpfs-clean /backup/etc/
5  1 * * *   pdumpfs-clean /backup/home/
15 1 * * *   pdumpfs-clean /backup/mail/
30 1 * * *   pdumpfs-clean /backup/samba/

0  2 * * *   pdumpfs /etc/ /backup/etc/
15 2 * * *   pdumpfs /home/ /backup/home/
0  3 * * *   pdumpfs /data/ /backup/data/


以上。

自宅サーバ ~DDNS自動更新~

VALUE-DOMAINを利用しているわけですけれども、我が家もDDNSを利用しなければならない環境ですので、設定してしまいましょう。

まずはVALUE-DOMAINで取得済みドメイン一覧を開き、変更対象ドメインの「DYN」をクリック。
「ダイナミックDNS機能」にチェックを入れます。

すると、ダイナミックDNS機能が有効になるわけですが、DNSは「NS1.VALUE-DOMAIN.COM」、「NS2.VALUE-DOMAIN.COM」を使うことになります。DNSにeNomを使っていた場合は、DNSの設定が消えてしまうのでメモっておきましょう。
#実際、.orgドメインの方の設定が消えちゃったりして、焦った・・・w。
#.orgはデフォルトではeNomを利用していたようですな。
#逆に.asiaはVALUE-DOMAINのDNSを利用していたようで。

次に、DNSの設定を確認しましょう。
a * [IP address]
mx @ 10

DNS設定のAレコードのみが下記URLにアクセスすることにより変更されるとのことです。
ここで、IPアドレスを省略するとアクセスしてきたマシンのIPアドレスが使用されること、
DNS設定のAレコードでホスト名が存在するものしか更新されないということころに注意。
http://dyn.value-domain.com/cgi-bin/dyn.fcg?d=ドメイン名&p=パスワード&h=ホスト名&i=IPアドレス


と言う訳で、IPアドレスを省略し、ホスト名をDNSのAレコードに設定した「*」にして、上記URLに10分間隔でアクセスするよう、サーバでは crontab -e で下記を追記します。
*/10 * * * * wget -O - 'http://dyn.value-domain.com/cgi-bin/dyn.fcg?d=recitativo-fant.asia&p=password&h=*&i=' > /var/log/ddns.log 2>1&

以上。

液晶ガードパネル

息子が1才2ヶ月。テレビの液晶に唾液タップリの手で触る。
それだけならまだしも娘が放置した鉛筆を持ってテレビに向かっていくと焦るw。
自分がいるときなら「ダメっっ!!」と強く言えば止めるが、いないときが不安。
ということで、液晶テレビを守るべく、液晶ガードパネルを作った。

5mmの透明アクリル板(押出板)をTVの大きさで、アクリルショップ・はざい屋さんに注文しました。
111cm×65cmで5000円台でした。
tvguard1.JPG
















アクリル板をTVに取り付けるための部品です。
1×2材をアクリル板の高さでカットしたもの、L字金具、木ネジ。これらはそこいらに転がっていたものを利用。
一応、液晶面からの放熱も考慮して、1×2材をテレビとアクリル板の間に挟む作りにします。これで、2cmほどの隙間が出来ます。
tvguard2.JPG
















1×2材をアクリル板に取り付ける穴は、4mmの鉄工用ドリルで慎重に開けて、さらに木ネジ(皿)の頭を埋めるために、プラスドライバーのビットで穴を削ります。
tvguard3.JPG
















はい、出来上がり。
tvguard4.JPG
















写り込みが激しくなりました(泣)。
息子がTVに触らなくなるまでの辛抱です。

これは、上端のL字。TVに引っ掛ける役目を果たします。
さらに、穴を利用してヒモを掛けて固定します。
このL字は厚みが結構あるので、1×2材も加工してあります。
tvguard5.JPG
















下端のヒモ掛け用金具です。そこらに転がってた使えそうなものを取り付けてあります。
tvguard6.JPG
















上端のL字金具と下端の金具を、対角線にヒモを掛けて設置完了。
かなり簡単に作ってしまいましたが、シンプルなだけあってなかなか見栄え良く出来たんじゃないかと思います。

ガンダムユニコーン8 特装版

4月17日(金)に届いたシナンジュのロケットバズーカ付きです。
特装版というからには豪華な箱にでも入っているのかと思いきや、ただのおまけ付き風パッケージ。いいけど、別に。
sinanju1.JPG
















なんだか、長ーいバズーカになりそうですな。
sinanju2.JPG
















中身はこんな感じ。
sinanju3.JPG
















取説見ると、ユニコーンのビームガトリングガンのアタッチメントが入ってる。どうやらユニコーンのシールドに2丁のガトリングガンを取り付けるためのものっぽい。
ビームガトリングガン持ってない・・・・(泣)。
あぁ、買っときゃ良かった。でも、ユニコーンを読み始めたのが12月くらいだったからもう手遅れだったんだろうけど。

さぁ、作らなきゃ。と、その前に、シナンジュもユニコーンもキュベレイも作らなきゃ。

水槽でプチトマト栽培4

種を播いたのが3月16日(月)。
今朝で、ちょうど1ヶ月。
ST330001tomato.JPG
















育ちが良いとは言えないよなぁ。

メネデールでも添加しようかな。
あらゆる植物を元気に育てる!【園芸用活力剤】 メネデール(100ml) 357円

自宅サーバ ~HDDを冷やせ~

マイクロタワーに5台のHDDを積んでいるうちのサーバー。
HDDがとろけてしまう前に冷やさねば。
ということで、ファンコントローラーを調査っっっ!!

会社の後輩曰く、「HDDは冬場に冷えすぎてしまう方が良くない」。
なので、温度設定ができて、設定温度になるとファンが回り、設定温度を下回るととまるものがいい。

で、候補に挙がったのがscytheの風サーバー (KS01-SL(シルバー) or KS01-BK(ブラック))。

Scythe 5 風サーバー インチベイ用4チャンネルファンコントローラー、全自動/半自動/手動の3通りの制御可能、4チャンネル分のファン回転数/温度・動作モードを表示

ってか、設定温度以下でファンOFFになるものは、現状これしか見つからなかった。

で、会社から客先保守に行くついでに秋葉原に寄って購入。ついでですよ、ついで。
15年ぶりくらいで歩いた電気街は初めて見る生メイド(呼び込みやってた)が新鮮でした。
何軒か回ったけど、T-ZONE PC DIY SHOPで見つけることが出来た。
#風マスターは何処にでもあったけど。

【CS-1615-SSB/350W】 ENERMAX Maxpoint PCケース
自宅サーバに使ったこのケース。前面(3.5インチシャドウベイの直前)、背面に8cmか9cmのファンが取り付けられる。

なので、ここになるべく風量の大きいファンを付けることにした。
選んだのはコレっっ!!

OWLTECH SANYO DENKI F9-N ケース用 標準FAN 9cm角 パルスセンサー付 3pin 3150r.p.m 騒音33dB リブ無 60,000h 最大風量 51.2CFM

さて、組み立てです。まずは開腹&ファン取り付け。
ST330004kazesv.JPG
















9cmファンを前面、背面に取り付けます。
上に載ってるのが風サーバーですな。

前面ファンを吸気用でセット。
ST330002kazesv.JPG

















斜めから見ると、一番下のディスクに風が当たらないかもしれないことが発覚。まぁ様子見ってことで。
ST330003kazesv.JPG

















次に、温度センサー取り付けです。
1個目はHDDラックの横に。対応ファンは前面。
ST330005kazesv.JPG
















2個目はCPUのヒートシンクに。対応ファンは背面。
ST330006kazesv.JPG
















出来上がりっっ。
ST330007kazesv.JPG
















でもって、起動。
ST330008kazesv.JPG
















起動直後の風サーバー
ST330009kazesv.JPG
















初期状態はAUTOで0度設定でした。なので全開でファンが回ってます。
とりあえず、HDD横の温度センサーを40度、CPUを60度で設定してみた。
するとファンがOFFになりましたね。
ST330010kazesv.JPG
















翌日アイドル状態(たぶん)ではこんな状態。
ST330012kazesv.JPG
















とりあえずコレで様子見ですな。

しかし、Atomって4cmファンが付いてるけど、ほんとに熱くならないのね。

自宅サーバ ~初めての自作~

さて、ようやくの自宅サーバネタです。

会社の後輩に勧められ、長らく使っていたメアドもジャンクがいっぱいくるし、ドメイン名も気に入ったのが取れそうだし、ということで自宅でサーバを運用しようかなということになりまして。

15年ほど前から使っていたプロバイダのメールとブログとサイトを引っ越すぞ。
プロバイダに払ってた金でドメイン契約料も出せるし、株も調子いいし。

ってことで、新たなWEB生活の出発。
ドメイン取って、サーバを自作。

初めての自作はAtomマシンでございます。
コンセプトは、WEB、メール、ファイルのサーバ。
なるべく省電力、ファイルサーバなのでディスクたっぷりという相反するところに挑戦w。

★お品書き★

ディスクを盛らなければ3万でお釣りが来るかもね。
このケース、3.5インチシャドウベイ×4 + 3.5インチベイ×2 + 5インチベイ×3と、結構盛りだくさんで入る。
サーバなので拡張性が高い方が良いのだ。ファンコントローラとかもいけるねぃっ!
これを組み上げました。初めての自作にしては30分でできたぞ。まぁ、挿さるところに挿すだけだからね。
ディスクが5発も入ると3.5インチベイがぎゅうぎゅうで熱くなるのが目に見えているが、そのうち何とかするさw。

さて、ソフトを入れていきましょう。
OSは、Ubuntu 8.10。
1.5TBが4発ありますがRAIDは組みません。
データ用×2とバックアップ用×2にする予定です。
バックアップは毎夜やることにして、そのときだけディスクを起こすようにするつもりです。

パッケージ構成は、LAPP(Apache + PHP + PostgreSQL)で行きます。
LAMP構成(Apache + PHP + MySQL)だとインストーラでワンセット入りますが、MySQLがお好みでないので、apt-getでシコシコと入れていきます。MySQLも入れちゃっても良かったんですけどね。

とりあえず、下記パッケージをインストール。
  • Apache2
  • PHP5
  • Samba
  • PostgreSQL
  • OpenSSH
とりあえず動作確認はできたぞと。
外からアクセスできるようにして、蔵にしまい込んで一日目終了。
ST330001atom.JPG

水槽でプチトマト栽培3

本葉が出始めましたよ。

12日目 ST330009.JPG













14日目 ST330011.JPG













なかなか成長しませんね。
やっぱ光が圧倒的に足りないのかな。

このアーカイブについて

このページには、2009年4月に書かれた記事が新しい順に公開されています。

前のアーカイブは2009年3月です。

次のアーカイブは2009年5月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。