概要
ラズパイ4にUbuntu 20.10をインストールしたので、現行の自宅サーバで動いているメールサーバとWordpressをラズパイへ移行しました。その備忘録です。
試した環境
Raspberry Pi 4 Ubuntu 20.10 (arm64)
$ nginx -v
nginx version: nginx/1.18.0 (Ubuntu)
$ certbot –version
certbot 1.11.0
事前設定・準備
Ubuntuのインストール、PPPoEの設定とドメインの設定を事前に済ませておきます。以前にPi3でやったことと同じなので、詳細は割愛。
Ubuntu 19.10 でPPPOE接続をしてポート開放を行う。
お名前.comで取得した独自ドメインのダイナミックDNS設定をUbuntuから定期的に実行する
[Raspberry pi4] Ubuntu 20.10 のヘッドレスインストール。 キーボード、ディスプレイなしでインストールする方法
ラズパイはUbuntuのインストールを済ませた状態から、eth0 に固定IPの設定をして、HGWに有線LANで接続している感じです。
下記のように、/etc/netplan/50-cloud-init.yaml で 固定IPを設定しています。192.168.1.1はHGWのアドレスです。
$ cat /etc/netplan/50-cloud-init.yaml
network:
ethernets:
eth0:
dhcp4: no
dhcp6: no
addresses:
- 192.168.1.40/24
gateway4: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
match:
driver: bcmgenet smsc95xx lan78xx
optional: true
set-name: eth0
version: 2
※ラズパイからPPPoE接続をするので、現行の自宅サーバでのPPPoEを一旦切断して作業しています。移行が終わるまでは切り替えられないので、ラズパイでの作業が終わったら現行の自宅サーバでのPPPoE接続に戻しています。ちょっと面倒ですが移行が終わるまでは我慢です。
現行の自宅サーバのPPPoEは切断しておく。
# PPPoEを切断する
$ sudo poff
ラズパイから PPPoE で接続。接続後、ダイナミックDNSへ登録。
# PPPoEで接続
$ sudo pon dsl-provider
# デフォルトGWがHGWになっているので一旦消す
$ sudo route del default gw 192.168.1.1
# お名前.com のDNS情報のアップデート
# 完全に移行できる状態になるまで Cron等での自動実行はさせないでおく。
$ /usr/local/bin/onamae.com_dns_update.py
実行後は、新しいアドレスで名前解決できるまですこし待ちましょう。数分で反映されるはずです。
NginxとCertbotのインストール
Nginxを入れます。
Nginxのインストール
$ sudo apt install nginx
・・・(省略)
# ポート80と443を開放する
$ sudo ufw allow http
$ sudo ufw allow https
# UFWはこんな状態
$ sudo ufw status
Status: active
To Action From
-- ------ ----
22/tcp LIMIT Anywhere
443/tcp ALLOW Anywhere
80/tcp ALLOW Anywhere
22/tcp (v6) LIMIT Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
Let’s Encryptの証明書を取得・更新してくれるCertbotを入れます。
こちらも公式サイトの手順通りにすすめるだけです。
https://certbot.eff.org/lets-encrypt/ubuntufocal-nginx
$ sudo snap install core; sudo snap refresh core
core 16-2.48.2 from Canonical✓ installed
snap "core" has no updates available
$ sudo snap install --classic certbot
certbot 1.11.0 from Certbot Project (certbot-eff✓) installed
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
証明証を取得するコマンドを実行する前に、DNSに反映されているかどうか、NginxのWelcome画面(私の場合は、http://nosubject.io)が表示されるかをみておきます。この状態になっていないと、証明書は取得できないと思います。
Let’s Encrypt SSL証明書の取得
ドメイン名でサイトへの接続が確認できたら、Let’s Encryptの証明書を取得します。
# 証明書の取得
$ sudo certbot certonly --nginx
・・・(省略)
途中でメールアドレスとドメイン名を聞かれるので、正確に入力します。
実行が終わると証明書の取得と Nginx の設定も更新されます。
証明書は /etc/letsencrypt/live の下に取得されます。
/etc/nginx/sites-available/default を見ると設定が追加されているのがわかります。
# SSLの設定や http → https への転送設定などが自動で追加されている
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/nosubject.io/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/nosubject.io/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
証明書の確認
もう一度、ブラウザから自宅ドメインにhttp接続すると、 自動的にhttpsに転送されるようになっているのがわかります。(⚠http://nosubject.io は 🔒https://nosubject.io へ)
テストサイトからも確認してみます。下記のサイトにアクセスして、hostnameのところに自宅サバのドメイン名を入力します。
ドメイン名を入力して、Submit を押すとチェックが走ります。
レートが A 以上ならば OK。それ以下 B~F だと何かしら設定に問題があるそうです。
Let’s EncryptだとおそらくA判定がでると思います。
以上で、NginxとLet’s Encryptの設定は終わりです。
後処理
まだ移行が終わっていないので、PPPoE接続は切っておく。
# PPPoEを切断する
$ sudo poff
# デフォルトGWを戻す
$ sudo route add default gw 192.168.1.1
ずっとPPPoE接続をしたままにできるようになったら、/etc/netplan/50-cloud-init.yaml から下記の行を削除(コメントアウト)しましょう。再起動後、毎回 route コマンドを打つのは大変なので。
# gateway4: 192.168.1.1
まとめ
次は、ここでインストールした Nginx と証明書を使って、Wordpress と メールサーバ を立てていきます。
WordPress と メールサーバ の構築には docker を使ってみたいと思います。
コメント