Oracle CloudにNextcloudをインストールする方法。

SSH

$ ssh-keygen
$ cat .ssh/id_rsa.pub

アカウント作成

https://www.oracle.com/jp/cloud/free/

A1インスタンスの作成

  • イメージ:Canonical Ubuntu 20.04 (minimalじゃない方)
  • シェイプ:VM.Standard.A1.Flex 1 OCPU、6GB
  • SSHキーは自分のPCで作った公開キーを登録しておくと楽
  • パブリックIPv4アドレスの割当て:はい

ブロックボリュームの作成

  • 「ストレージ」→「ブロックボリューム」→「ブロックボリュームの作成」
  • 名前は適当に決め、「カスタム」を選んで容量を100GBにし、ブロックボリュームを作成します。
  • 「コンピュート」→「インスタンス」と進み、A1インスタンスのページに移動します。
  • 「アタッチされたブロックボリューム」→「ブロックボリュームのアタッチ」を選びます。
  • 「アタッチメントタイプ」はiSCSI、「ボリューム」は先程作ったブロックボリューム名、「デバイス・パス」は選択しない、「アクセス」は「読み取り/書き込み」を選んで「アタッチ」を実行します。
  • 少し待つとアタッチが完了します。完了したら右側の「︙」を選んで「iSCSIコマンドおよび情報」を選びます。
  • 接続のためのコマンドがありますので、クリップボードにコピーし、メモ帳などに貼っておきます。
sudo iscsiadm -m node -o new -T [接続情報] -p [IPアドレス]:3260
sudo iscsiadm -m node -o update -T [接続情報] -n node.startup -v automatic
sudo iscsiadm -m node -T [接続情報] -p [IPアドレス]:3260 -l

sudo iscsiadm -m node -T [接続情報] -p [IPアドレス]:3260 -u
sudo iscsiadm -m node -o delete -T [接続情報] -p [IPアドレス]:3260

A1インスタンスのセットアップ

  • SSHでA1インスタンスに接続します。
ssh -l ubuntu [IPアドレス]
  • アップデートを実行します。
sudo apt-get update && sudo apt-get upgrade -y
  • 先程メモしておいたiSCSIのアタッチコマンドを実行します。
sudo iscsiadm -m node -o new -T [接続情報] -p [IPアドレス]:3260
sudo iscsiadm -m node -o update -T [接続情報] -n node.startup -v automatic
sudo iscsiadm -m node -T [接続情報] -p [IPアドレス]:3260 -l
  • アタッチできているか確認します。
sudo fdisk -l

Disk /dev/sdb: 100 GiB, 107374182400 bytes, 209715200 sectors
Disk model: BlockVolume     
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 1048576 bytes
  • ディスクにパーティションとファイルシステムを作成します。
sudo fdisk /dev/sdb
sudo mkfs.ext4 /dev/sdb1
  • A1インスタンスの再起動時に、ブロックボリュームが自動的にマウントされるように設定します。
ls /dev/disk/by-uuid/ -l
sudo vi /etc/fstab

UUID=[UUID情報] /mnt/vol1 ext4 defaults,_netdev,noatime 0 2

sudo mkdir /mnt/vol1
sudo reboot
  • Nextcloudのインストール
$ sudo snap install nextcloud
$ sudo snap install nextcloud
nextcloud 21.0.1snap2 from Nextcloud✓ installed
$ sudo snap connect nextcloud:removable-media

$ sudo nextcloud.enable-https self-signed
$ sudo nextcloud.enable-https lets-encrypt
  • ポートの開放
sudo vi /etc/iptables/rules.v4

#15行目ぐらいにポート22を開放するルールがあるので、その行付近に下記1行を追加して上書き保存します。

-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT (Let's encrptの設定で使う)
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT

sudo iptables-restore < /etc/iptables/rules.v4
ポートの開放(VCN)

OCIコンソールの「ネットワーク」→「仮想クラウドネットワーク」を選びます。
VCNを選びます。
セキュリティリストを選びます。
「イングレスルールの追加」を選びます。
下記のような設定でポートを開放します(画像にはポート80が入っていますが、入れなくてOKです)自宅のグローバルIPアドレスが分かれば、CIDRを変更しておくとIPアドレス制限が可能です。
SOURCE CIDR
0.0.0.0/0
PORT
80,443
HTTP and HTTPS
  • Nextcloudセットアップ

https://インスタンスのIPアドレス

  • データ保存先を移動
sudo snap stop nextcloud
sudo mkdir /mnt/vol1/nextcloud
sudo chmod 0770 /mnt/vol1/nextcloud
sudo mv /var/snap/nextcloud/common/nextcloud/data /mnt/vol1/nextcloud/

#設定ファイルを変更

sudo vi /var/snap/nextcloud/current/nextcloud/config/config.php
 // ...
 'datadirectory' => '/mnt/vol1/nextcloud/data',
 // ...

  'trusted_domains' =>
  array (
    0 => '[IPアドレス]',
    1 => '[ドメイン名]',
  ),

sudo snap start nextcloud