自宅サーバを立てるために最小限度すること

以前から遊びで自宅サーバを立ち上げたいと思っていて、とりあえず最小限度何をすればよいか調べました。
とりあえず CentOS などで本格的なサーバを立てるのではなく、まずはふつうの Ubuntu 14.04 でやってみました。


まず、家庭の LAN に割り当てられているグローバルIPアドレスはふつう変化する(動的)ので、これを固定するサービスを導入するか(これはたいてい有料オプション)、あるいは No-IP などの「ダイナミックDNSサービス」を使う必要があります。No-IP は無料プランがあるので、それを使ってみました。これで自分の家の LAN に URL が割り当てられ、この URL でインターネットからアクセスするわけです。

それから、LAN内のプライベートIPアドレスもふつう変化するので、サーバに使う PC のIPアドレスを固定しなければなりません。自分は UbuntuGUI で設定しましたが(参照)、ぐぐるCUI で設定するのが普通らしいです。自分のところのルーターDHCP を使っていますが、家庭内の他の PC はそのままで、自分の PC の IPアドレスだけを固定できます。

次に、いわゆる「ポート開放」というのをやってやらねばなりません。これをやらないと、WAN(インターネット)の方から LAN 内のサーバにアクセスできないからです(ルーターが余計なアクセスを遮断するので)。これはルーターの設定になるので、僕のバッファロー製のルーターだと http://192.168.11.1/ にアクセスして設定します(参照)。ルーターが「静的IPマスカレード」をサポートしている必要があります。


自分の場合は、ネットワークの設定は以上でした。

次はサーバを用意します。ぐぐると普通は Apache を使う例が多いですね。自分はとにかく最小限度でとりあえず動かそうというのですから、いつも Ruby を使っているので、標準添付ライブラリの簡易サーバである WEBrick を使いました。これは非常に簡単に使えるので、以前 LAN内で試しに動かしてみたことがあります(ここ)。これをそのまま流用して、公開用の HTTPサーバとして使いました。適当なサンプルの HTML を用意して、実行してみます。

以上でお終いです。本当にインターネットから接続できるか、自宅の LAN ではないところから、No-IP から取得した URL でブラウザからアクセスしてみます。サンプルの HTML で指定されたようにブラウザで表示されれば、実際に接続できることがわかります。

なお、以上ではセキュリティ上のことは特に何もしていません。これは次の課題だな。


細かいところは、以下の自分の日記ブログの記事も参考になるかも知れません。
自宅サーバにまず何が必要か
自宅サーバをインターネットに公開する
ひきつづき自宅サーバ


※追記(3/10)
サーバを立ち上げるとき、「`bind': Address already in use」のような表示が出てエラーになる場合は、たぶん既にソケットが使われているのである。そういう時は $ ps x でソケットを探しだしてプロセスを kill し、サーバを再スタートさせてみる。