見出し画像

古くなったリンゴを鯖にしよう!(その3)

こんにちは。なかのさんです。

前回から数記事に渡って、とある企画の軌跡をつらつらと書いております。

内容はズバリ、古いMacにUbuntu Serverをインストールして、クラウドストレージとして使う!です。


前回(第2話)では、このMacにUbuntu Serverをインストールして、SSHなどの初期設定を行いました。


第3話となる今回は、DDNSを取得し、外部からアクセスできるよう自分専用のURLを発行してもらいます。そして、DDNSを定期的に更新してもらうように設定します。


では始めます。



DDNSとは

IPアドレスとドメイン名を結びつけるのがDNSですが、一般家庭に提供されるIPアドレスは頻繁に変わる場合が多いです。このため、定期的にIPアドレスとドメイン名を結びつけてやらないと、Webページにアクセスしても見れないということになります。これを解決するのがDDNSです。

DDNSを提供しているサービスはいくつかあって、無料のものと有料のものがあります。有料のものであれば.comなどの知名度のあるドメインを使うことができます。ただ個人で使う場合は、知名度のない(ちょっと変わった)ドメインを使ってでも、無料のサービスを使う方がランニングコストは抑えられると思います。

ということで、今回は無料のDDNSサービスであるMyDNS.JPに登録します。


MyDNS.JPへの登録

画像1

まずはMyDNS.JPにアクセスして、ユーザーアカウントを登録します。


ドメイン名を設定

画像2

”DOMAIN INFO”のページをスクロールしたところにある、”Domain”と”MX (FQDN)”にお好きなドメイン名を入力します。

このURLが今後Nexcloudへのアクセスに必要なので、どこかにコピペしておきましょう。


IPアドレスとドメイン名を結びつける

さて、ドメイン名とご自身のIPアドレスを結びつけてやりましょう。

以下は、こちらのブログを参考にしました。


更新を行うシェルスクリプトファイルを作成します。

$ cd ~
$ vim ./update_ddns.sh

iキーを押して編集モードに入り、以下をコピペします。

#!/bin/bash
wget -q -O /dev/null https://MASTER_ID:PASSWORD@ipv4.mydns.jp/login.html

一つずつ見てくと、

wgetはWebページを取得するコマンド。
-qオプションで実行結果をスクリーンに表示しないようにします。
続いて-Oオプションで、取得したWebページを/dev/nullに出力します。
/dev/nullはLinuxの”ブラックホール”。ここに移動したファイルは消されます。

MyDNS.JPは、正しいMaster IDとパスワードでログインURLにアクセスがあると、このアクセスをIPアドレスの更新とみなします。取得したログインページを何かに使うことはありません。なので/dev/nullに捨てます。

そして最後がログイン用のURL。MASTER_IDPASSWORDの部分は、ご自身のMaster IDとパスワードに置き換えてください。

編集が終わったら:wqと入力してvimを終了します。

$ chomod 700 ./update_ddns.sh

として、現在ログイン中のユーザーにのみフルアクセス(閲覧・編集・実行の権限)を許可します。

これで更新ファイルができました。一度確認してみましょう。

$ ./update_ddns.sh

としてこのファイルを実行してから数分後に、クライアントPCからMyDNS.JPの”LOG INFO”のページを開いてみてください。


画像3

このように、”IPv4 UPDATE”と”DNS UPDATE”という文字があれば、更新に成功しています。

これでIPアドレスとドメイン名が結びつきました。ドメイン名をWebブラウザーに入力すると、MyDNS.JPのDNSサーバーがIPアドレスを返してくれるようになります。


自動更新

ただし、先述の通り、DDNSでは定期的にドメイン名とIPアドレスを結びつけてやる必要があります。

$ crontab -e

として、ファイル末尾に移動。aキーを押して追記モードに入ります。

改行して以下の内容をコピペ。

0 */3 * * * ./update_ddns.sh

これで3時間に1回、MyDNS.JPに現在のIPアドレスが通知されます。


以上でDDNSの設定はおしまいです。



次回予告

画像4

次回、最終回!

ついにサーバーMacにNextcloudをインストールし、LAN内外からアクセスできるようにファイアーウォールを設定します。