Dynamic DNS と https化 (ownCloud + Raspberry Pi 続き)

More than 3 years have passed since last update.


Overview

前回、ownCloud + Raspberry Pi で Google Drive代替 storage を 構築してみる では、ownCloudを、Ubuntu Mate 15.10 on Raspberry Pi3に構築しましたが、外から使うには、DNS対応と、https対応がないと心もとない感じですので、それのsetup編です。


dynamic DNSを利用する

私の場合は、mydns.jpを利用しました。

example.mydns.jpのような形でアクセス可能です。


cronで定期的にIP addressを更新する

mydns.jpは一定期間アクセスがないと、登録したnameが消失しますし、IP addressは通常変わり得ますので、cronで毎回loginして、IP addressを更新します。

$ cronbtab -e

*/10 * * * * wget -q -O /dev/null http://mydns123456:abcdefghijkl@www.mydns.jp/login.html

のような感じで、ID/passwordで、curlとかwgetで定期ログインできるようにしましょう。


owncloudの設定


/var/www/owncloud/config/config.php

<?php

$CONFIG = array (
..snip..
'trusted_domains' =>
array (
0 => 'localhost',
1 => 'example.mydns.jp',
2 => 'www.example.mydns.jp',
),

こんな感じで、trusted_domainsに設定しましょう。


https化

let's encryptが、無料でhttpsの証明書を発行してくれるので、それを使わせてもらいます。

まず、これを実行する前に、routerの設定で、443(https)をあけておきましょう。

また、

$ sudo ufw allow 443

などで、443(https)を開けておきましょう。

--wwwrootだと、80でチェックするので、以下のように、--standaloneでかつ、443で認証するようにさせてあります。

$ cd ~/work

$ git clone https://github.com/letsencrypt/letsencrypt
$ cd letsencrypt
$ sudo ./letsencrypt-auto --help
$ ./letsencrypt-auto certonly --standalone --standalone-supported-challenges tls-sni-01 -w /var/www/owncloud -d example.mydns.jp -d www.example.mydns.jp
Checking for new version...
Requesting root privileges to run letsencrypt...
/root/.local/share/letsencrypt/bin/letsencrypt certonly --standalone --standalone-supported-challenges tls-sni-01 ..snip..

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/example.mydns.jp/fullchain.pem. Your cert
will expire on 2016-XX-XX. To obtain a new version of the
certificate in the future, simply run Let's Encrypt again.
- If you like Let's Encrypt, please consider supporting our work by:

Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le


/etc/apache2/sites-available/default-ssl.conf

                SSLCertificateFile    /etc/letsencrypt/live/example.mydns.jp/fullchain.pem

SSLCertificateKeyFile /etc/letsencrypt/live/example.mydns.jp/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.mydns.jp/chain.pem


/root/bin/renew-cert.sh

#!/bin/bash

systemctl stop apache2
/home/xxx/work/letsencrypt/letsencrypt-auto certonly --non-interactive --standalone --standalone-supported-challenges tls-sni-01 -w /var/www/owncloud -d example.mydns.jp -d www.example.mydns.jp
systemctl start apache2

# crontab -e

0 0 1 * * /bin/bash /root/bin/renew-cert.sh

みたいにして、毎月とりあえず更新を試みるようにしておきます。

(root実行必要)


ほか

$ sudo ufw allow 443

$ sudo systemctl restart apache2

それでは、enjoy.