ラズパイで自宅鯖を建てた

ここ最近、お手伝いしてるスタートアップのオフィスに固定IPが振られていることを知った。回線もかなり安定してるし、前々からやろうと思ってたラズパイ鯖構築をやってみた。

やりたかったこと

ラズパイを使いたかった

買ったけど、ちょっと遊んだあと箱にしまってあった。 可愛いのに、使わないのはなんだかなあと思ってた。

開発用のDaaSが欲しかった

貧弱なスペックのネットブックことMacBook(RAM:8GB)で常時0.5GBを専有するMySQLさん。 ついこないだ、Macを2台体制に変えたこともあって、データベースをクラウドに移したいと思った。 そこで、Database as a service、略してDaaS。 色々探してはみたけど、無料でまともに使えるDaaSはMongoLabくらいしか存在しない。しかも、Mongoである。MySQLも使いたい。遊びの開発用途であればラズパイで動くと思った。

ミニアプリのデプロイ先にしたかった

数ヶ月前にherokuが無料プランの内容を変更して、夜になるとdynoが眠ってしまう仕様になった。低スペックでもいいので24時間たちあがってるサーバーが欲しかった。

テスト鯖

CEOがリモートワークしてるので、作ったサイトの確認等してもらうのが大変。
毎回、全画面のスクショ取って送って確認してもらってたけど、骨が折れるのでロリポップでも契約しようかと迷っていた。ラズパイで済むと思った

VPS高い

自分が鯖でやることとVPSの価格が釣り合わなかった。 ちゃんとしたサービスをやるってなったときに契約する。

やったこと

Raspbianを焼いた

RaspberryPiの公式サイトからRASPBIAN JESSIEというDebianベースのOSを落としてきて、ApplePie-Bakerという便利なアプリでSDカードに焼いた。3分くらいで焼けた。

初期設定した

rootログイン禁止したり、SSHのポートを変えたり、iptables周りをufwで設定したり、ローカルIPを固定したりした。
あと、$ raspi-configからローカル設定で日本語を選んだり、オーバークロックでPi2に設定したり、GPUへのメモリ割り当てを16MBにしたりした。(サーバー用途なので)

たくさん入れた

Nginxやら、Nodebrewやら、MySQLやら、SQLite3を入れた。
ついでに、グローバルIPから「Welcome to Nginx」を見れるようにルーターの設定をしたり、Sequel ProからMySQLに接続できるようにしたり、vsftpdを入れて愛すべきアヒルさんCyberduckからファイルのやり取りができるようにした。

Apache入れるか迷ったけど、あんまり使い方分からないしNginxだけで困ったら入れようということにして無視した。

リスクを減らした

上にも書いたけど、今回は主にWebサーバー用にラズパイを構築した。 しかし、SDカードは結構すぐに書き込み回数の限界が来るらしく、特にサーバー用途で使うとアクセスログやデータベースへの書き込みで1年くらいで急死するらしい。

そこで、結果論から言うと書き込み回数の多いディレクトリにUSBメモリ(16GB)をマウントして管理することにした。

今回、USBで管理することにしたのは/home/varの2つ。
/homeは各ユーザーのデータが入るところ、/varはアクセスログやデータベースの中身が入るところで、この2つをUSBで管理すればかなりSDカードの負担は減るだろうと言う感じである。

具体的に書くと、パーティションを2つ切って、1つは/home用に4GBを割り当てて、もう1つは/var用に8GBを割り当てた。データベースの中身が入るからという理由で/varの方を大きくしてある。

文にしてしまうと簡単っぽいけど、これがかなり大変だった。 はじめは/varさえマウントしてしまえばOKだろうと考えていたけど、いざ使おうと思ったらアプリを置くのは/home/user/以下が良いことに気づいて、もう一度フォーマットしなおそうとしたら、ミスってsshで入れなくなって泣きそうになったりした。最終的にはなんとかできた。

良さ

小さなボディで頑張ってるラズパイが愛おしくてたまらない。 実際、日常の細かなストレスが解決しそうで良い。

参考