This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 3 years have passed since last update.

Raspberry Pi 4BにUbuntu20.04でサーバー構築し、Nextcloudを導入してみた。第3回

Last updated at Posted at 2021-02-26

第1回

  • Ubuntuのインストール
  • Raspberry Piの準備
  • キーボード・ユーザー設定
  • プライベートIPアドレス固定化

第2回

  • SSH公開鍵認証
  • サーバー側ファイアウォール
  • swap領域の作成
  • タイムゾーン・ホスト名設定など

第3回 現在のページ

  • SSDマウント
  • ドメイン取得・DDNS設定
  • Nextcloudインストール
  • サーバー・ルーターのポート開放
  • SSL証明書取得

第4回

  • Nextcloudへの外付けSSD認識
  • 2要素認証
  • 通知メール設定
  • 主な参考元

1. SSDのマウント

今回は2TB以下のメディアをマウントするのでfdiskで行っていますが、それ以上のサイズのメディアをマウントする際はpartedを使用してください。

USB3.0ポートにSSDを差し込む。

$ sudo fdisk -l

でデバイスが認識されていることを確認。
Disk項目にデバイス名(/dev/sdaなど)が表示されるので控えておきます(mmcはSDカードなので間違えないように)。

$ sudo fdisk [ デバイス名 ]

で対話形式のパーティション操作に移ります。

以後の操作で内部のデータは削除されるので、もし必要なデータが内部に残ったままなら必ず先に別のストレージ機器に移しておいて下さい

d(パーティション削除) → n(パーティション新規作成) → w(設定の保存)で既存のパーティションを削除して新規のパーティションを作成します。

$ sudo fdisk -l

新規パーティションのデバイス名を確認。

$ sudo mkfs -t ext4 [ パーティションのデバイス名 ]

ext4形式でファイルシステムを作成。

以下のコマンドでパーティションのマウント先ディレクトリを作成した後、マウント。

$ sudo mkdir /media/ssd
$ sudo mount [ パーティションのデバイス名 ] /media/ssd 

更に、fstabに記述を加えることで次回以降も自動でマウントされるように設定。

まずはデバイスのUUIDを確認。

$ sudo blkid [デバイス名]

/etc/fstabをテキストエディタで開き、
以下の様に記述(各項目間はスペースやtabなどで区切る)。

UUID=[デバイスのUUID]  /media/ssd  ext4  defaults,noatime  0  0

noatimeと記述することでアクセス時間の書き込みを無効化しています。

再起動後も$ cd /media/ssdでマウント先ディレクトリに移動出来れば成功です。

2. ドメイン取得・DDNS設定

サーバーに設定するドメインおよびDDNSの設定を行います。
DDNSを利用することで、グローバルIPアドレスを固定せずともDNSによる名前解決で外部からのアクセスが可能。

 [PC側の操作]
今回はMyDNS(https://www.mydns.jp/?MENU=030) を利用してドメイン名の取得とDDNS設定を行います。
MyDNS のJOIN US からアカウントを作成し、メールで届いたMasterID/ Passwordを使用してログイン。
DOMAIN INFO をクリックし、
Domain Nameに任意のドメイン名を入力。MXは入力なし。
Hostname*, Type*, Content, Delegateidの項目は、1行目を左から*, A、2行目を左から*, AAAAと入力でひとまずは大丈夫です。

 [サーバー側の操作]
DDNSを有効化させるためには定期的に現在のIPアドレスをDDNSサーバー側に送る必要があります。
ひとまず、以下のコマンドでMyDNSに通知が届くか確認。

$ curl -u [ MyDNSのMasterID:password ] https://www.mydns.jp/login.html

PC側のMyDNSにログインし、LOG INFOで確認できれば次へ。

以下のコマンドでcrontabをエディタで開く。

$ crontab -e

使用するエディタを聞かれるので、いずれかを選択(私はvim basicを使用しました)。

以下の様に入力して、10分おきにMyDNSへipアドレスの通知を行うよう設定。

#HTTPs request for My DNS
*/10 * * * * curl -u [ MyDNSのMasterID:password ] https://www.mydns.jp/login.html

これで定期的に現在のグローバルIPアドレスが通知され、ドメイン名との紐づけがされるようになります。

3. Nextcloudのインストール

まずはnextcloudのスナップパッケージをダウンロード。

$ sudo snap install nextcloud

管理者用アカウントを作成してnextcloudをインストール。

$ sudo nextcloud.manual-install [ 管理ユーザー名 ] [ パスワード ]

Nextcloud was successfully installedと表示されれば完了です。

続いて取得したドメインを登録

$ sudo nextcloud.occ config:system:set trusted_domains 1 --value=[ ドメイン名 ]

以下のコマンドで確認すると、localhostに加えてドメイン名が追加されているのが分かります。

$ sudo nextcloud.occ config:system:get trusted_domains

4. ポート開放・SSL証明書取得

ⅰ. サーバー・ルーターのポート開放

UFWのTCP80,443番ポートの開放

sudo ufw allow 80,443/tcp

ルータにアクセスしてポート転送(フォワード)設定を開き、TCPのWAN側・LAN側のポート80番、ポート443番をサーバーのプライベートIPアドレス宛に転送するように設定します。

ⅱ. SSL証明書取得

以下のコマンドでSSLサーバー証明書を取得

sudo nextcloud.enable-https lets-encrypt

証明書取得のための必要条件(ポート開放など)について聞かれるのでyで進みます。
復元用メールアドレスやドメイン名を聞かれるのでそちらも入力し、以下が表示されれば成功です。

Attempting to obtain certificates... done
Restarting apache... done
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up