このページを正しく表示するにはJavascriptを有効にしてください。
Raspberry Piで自宅SSHサーバーを立ててみた
今更感もありますがRaspberryPi買ってみました。
手のひらサイズのデバイスですが、立派なコンピュータとして使うことが出来ます。
個人用に自由にいじれるサーバーとして扱えるなら便利かな、と思い買ってみました。
(あと最近電子回路・工作にも興味が出てきているので。)
というわけで、今回はこのRaspberryPiを自宅サーバーにしてみます。
# 揃えたもの
* Raspberry Pi本体
* Amazonでも売っていたケース付きのもの
* 4GB以上のSDカード
* Raspberry Piのハードディスク的なものに相当
* 読み書きが早いほうが快適
* MicroUSBケーブル
* USB充電器(700mA以上出力可)
* RaspberryPiの電源として必須
* USBとか挿すので大出力のが安心
* HDMI対応モニタ
* HDMIケーブル
* セットアップ時の画面出力に必要
* なければコンポジット(ゲームとテレビつなぐ黄色いやつ)でもいけるらしい
* USBキーボード
* USBマウス
* セットアップ時に必要
* マウスあると無線の設定がちょっと楽
* パソコン
* SDカードリーダー
* セットアップ時や確認時に必要です
* SDカードリーダー付きPCがあったので今回はWindowsを使いました
* 無線LANアダプタ
* サーバー化するなら有線のほうが便利ですが、個人的な都合で無線で立てます
* 今回は手持ちのBuffalo製を使いました
## OSインストール
RaspberryPiは届いたままでは利用できないので、
まずはOSのインストールをします。
最初はFedra系のPidraを使おうと思ったのですが、無線LANアダプタのドライバ導入に苦戦したので、素直にRaspbianをつかうことにしました。
[http://www.raspberrypi.org/downloads/](http://www.raspberrypi.org/downloads/)
ここからRaspbianを落とし、ZIPを解凍します。
そしてWin32DiskImagerを使ってSDにOSを焼きます
[http://sourceforge.jp/projects/sfnet_win32diskimager/](http://sourceforge.jp/projects/sfnet_win32diskimager/)
無事焼き終わったらRaspberry Piに挿して起動します。
電源スイッチがないのでMicroUSBを挿したら起動してしまうので、
その前にモニタやUSB類も挿しておきます。
初回時はセットアップ用の画面が出てくるので
ここで自分好みに設定してあげます。
詳細は省きますが、SDを拡張したり、CUIで起動するようにしたりしました。
設定完了すると再起動して、CUIが使えるようになります。
初期ユーザーはpiだけなのでユーザーを作ってパスワードを設定します。
## 無線セットアップ
CUIでももちろんセットアップ可能ですが、ちょっと面倒なのでGUIから設定することにしました。
コンソールから```startx```してあげるといつでもGUIのインターフェイスを呼び出せます。
プリインされている無線ツールはちょっと使いづらいですが、
ここでSSIDなどを設定して無線が使えるようにします。
無事インターネットにつながるようになったら再起動。
再びCUIに戻ります。
## ローカルIP固定
毎回RaspberryPiに割り当てられるIPが変わってしまうと困るので
ローカルでのIPを固定してあげます。
ルーターがいじれる環境であれば、無線ルーターのDHCPに
RaspberryPiのMACアドレスを登録して常に同じIPを返してあげるのが簡単です。
## SSH Port変更
RaspberryPiにいろいろ挿して使うのも不便なので、
普段はSSHでアクセスできるようにしておきます。
こうすることでRaspberryPiから出るケーブルは電源のみになって
使い回しが非常によくなります。
ただSSHの22番ポートを開けとくのは心理的にちょっと怖いので、
SSHのポート番号を変更しておきます。
$ sudo vi /etc/ssh/sshd_config
# PORT 22
PORT 22222
## ルーター ポート開放
つぎに外部からグローバルIPでアクセスできるようにポートを開けてあげます。
(家の回線がグローバルIP割り振ってくれるところじゃないと厳しいです。)
このへんもルーターの管理画面から。
SSH用のポートと、あとでWebサーバーとして使う予定のポート(80とか)を絞って開けておきます。
## DDNS登録
グローバルIPはもらえるけど、毎回同じIPがもらえるわけではないという回線の場合、
DDNSを使うと便利です。
このDDNSを使うとドメインでSSH等にアクセスできるので、
毎回IPを調べて接続するという手間が省けます。
今回は
[http://ieserver.net/](http://ieserver.net/)
というサービスをお借りしてDDNSを設定してみました。
無料で利用できるのでありがたいです。
利用方法としては、まずサイトから利用登録をし、
自分用のドメインとアカウントを発行します。
そして今利用している回線のIPをブラウザから登録します。
こうすることで現在のIPに対してドメインでアクセスが可能になります。
実際にRaspberryPiへSSHでつながるかテストしてみましょう!、…
と言いたいところですが、同じIPからドメイン経由でテストしようとすると
うまくつながりません。
外部のサーバーなどを一回踏み台にするなどして
外部のIPからSSHにつないでみてテストしましょう。
(レンタルサーバーや3G回線などからスマホでアクセス)
うまくつながったら、今度はIPに変更があった場合に備えた設定をします。
DDNSが自動でIPを監視してくれるわけではなく、こちらからIPが変わったことを
教えてあげる必要があるのです。
教える方法としてはやはりRaspberryPiを使います。
[http://ieserver.net/ddns-update.txt](http://ieserver.net/ddns-update.txt)
ここのPerlスクリプトを落としてきてアカウント情報などを修正、
crontabで数時間置きに叩いてあげるようにすればOKです。
これでいつでも同じドメイン名からアクセスできます。
# 稼働開始
これでRaspberryPiをサーバーとして運用できるようになりました。
あとはWebサーバーを入れたり好きなようにするだけ!
…と思っていたのですが思わぬ落とし穴が。
## 熱暴走
セットアップ中は特に問題なかったので油断していたのですが、
いざ運用を開始してみると重大な問題が発生してしまいました。
なんと1,2時間連続稼働するとシステムが落ちて動かなくなってしまうのです。
電源を付け直せば復活するのですが、しばらくするとまた落ちちゃいます。
原因は熱みたいで、落ちる寸前はRaspberryPiのケースがかなり暖かくなります。
CPUとか無線アダプタに至っては長く触れないほど熱いです。
サーバーなのに長時間運用出来ないのは致命的なのでなんとか改善したい…。