さくらのレンタルサーバ にNextcloudをインストールしてプライベートクラウドを構築する

#はじめに
##この記事はなに
素人が興味本位からレンタルサーバにプライベートクラウドを設置するまでの経緯。

##この記事の状況
- 初心者:beginner:
- さくらのレンタルサーバ
 - スタンダードプラン以上を推奨(理由は後述)
- Nextcloud
 - Web installer

#Nextcloudのインストール
##Webサーバどのプラン？
ライトプランは使えるDBがSQLiteのみとなります。
１年間使ってきて、容量に不満はないものの速度でストレスに感じる場面が多くありました。
そのため、MySQLを使用できるスタンダードプラン以上がおすすめだと思います。

##Nextcloud Webインストーラの取得
[Nextcloud](https://nextcloud.com)にアクセス。
**Get Nextcloud**→**Server**→**Download for server**→**</>Web Installer**→
1. Right-click **here** and save the file to your computer のリンク部分をクリックしてファイルをローカルに保存

**setup-nextcloud.php**を取得しました:open_hands:

##Webインストールの手順

###インストールの前準備
レンタルサーバのサーバコントロールパネルより
Webサイト/データ→データベース→[新規追加]
データベース名:適当に(後で変更はできません)
注意事項をよく読んで、同意するに☑
作成後、[設定]よりデータベース接続用パスワードの設定を忘れずに行うこと。
この画面の
**ユーザ名**
**接続先パスワード**
**データベース名**
**データベースサーバ**
は後ほど必要となりますので、メモしておく:writing_hand:

###インストール

####Web Installerのアップロード
レンタルサーバのサーバコントロールパネルより
Webサイト/データ→ファイルマネージャー→画面上部の[アップロード]→[ファイルを追加]
取得した**setup-nextcloud.php**をアップロードする。

####インストーラーにアクセス
引き続きファイルマネージャーで、
先ほどアップロードしたsetup-nextcloud.phpを右クリック→[Webページとして開く]

#####Setup Wizard
最新版はNextcloud18(2020/2/8現在)のはずなのに、Setup Wizardの画面では**Nextcloud 16.0.3!**ですが、気にせず→[Next]

#####Dependency check
インストールするディレクトリを選択。
"."("は入力しません)とすれば、setup-nextcloud.phpと同じフォルダに、
任意のフォルダ名を入力すればその中に、
ファイルが展開されます。→[Next]

#####Success
おめでとうございます:tada:(道のりはまだまだです)→[Next]

#####管理者アカウントを作成してください
任意のユーザ名とパスワードを入力します。
ストレージとデータベースの▼をクリック
データベースは[MySQL/MariaDB]を選択し、必要事項を入力します。
前準備でメモをしたそれぞれの項目を入力しましょう。
データベースのユーザ名:**ユーザ名**
データベースのパスワード:**接続先パスワード**
データベース名:**データベース名**
localhost:**データベースサーバ**

#####おめでとうざいます。:tada:
プライベートクラウドを満喫しましょう:smiley:

###最新版への更新
先ほど確認したように、なぜか最新版ではないので更新を数回繰り返す

ダッシュボード右上のアイコン→[設定]→管理の[概要]→バージョン
`新しいバージョンが利用可能です：バージョン名` となっているので、ここが
`最新版です。` の表記になるまでアップデートを繰り返します。
→[アップデーターを開く]

####Initializing
[Start Update]をクリックすると各項目に:white_check_mark:が入っていきます。
全ての項目に:white_check_mark:が入ると、
`keep maintenance mode active?`と聞かれますので、
**[No(for usage of the web based updater)]**をクリックしてください。
Nextcloudの再起動後、ダッシュボード画面に戻ります。

#####誤って[Yes(for usage with command line tool)]をクリックした場合
ひとまず慌てずに深呼吸して、コーヒーでも飲んで落ち着いてください☕️

[Nextcloudがずっとメンテナンスモードのまま](https://qiita.com/CloudRemix/items/14d6f5b1c11afb09449e) を参照して解決しましょう。
記事中の`config/config.php`ですが、ファイルマネージャーよりアクセスできます。
`config.php`を右クリックして[編集]、該当箇所を修正た後[保存]してみてください。

###警告とその対処
ダッシュボード右上のアイコン→[設定]→管理の[概要]→セキュリティ&セットアップ警告 に、いくつかの警告が表示されていると思います。

####PHPのメモリ制限は推奨値512ＭＢを下回ります。
レンタルサーバ コントロールパネル→スクリプト設定→php.ini設定より

```www/php.ini
memory_limit = 512M`
```

####セキュアではないHTTP経由でアクセスしています。(以下略
http://でアクセスすると表示されるため、https://でアクセスしましょう。
ついでなのでサイト全体にhttpsへ強制リダイレクトする設定します。
ファイルマネージャーからwwwに[表示アドレスへの操作]→[ファイル作成]し、下記の内容を入力後、ファイル名を**.htaccess**として保存します。

```www/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>
```

####"Strict-Transport-Security"HTTPヘッダが(以下略
この設定は下記のその他を参照した後に行うことをおすすめします。
```www/.htaccess
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
```
ちなみに`max-age=31536000`は１年間の秒数を表しています。

####メモリキャッシュが設定されていません。
```config/config.php
  'memcache.local' => '\OC\Memcache\APCu',
```

####このインスタンスには推奨されるPHPモジュールがいくつかありません。(中略) imagick
[さくらのレンタルサーバーでImageMagickを使用する方法](https://deco8.net/web/sakura-server-imagemagick/)を参考に設定しました。

```www/php.ini
extension=imagick.so
```

####big intがなんとか(警告文メモ忘れました)
PHP My Adminにログインし、該当レコードの型を変更する
ユーザ名:
パスワード:
[データベース]→[使用中のデータベース]→[警告されているテーブル]→[構造]→(警告されているフィールドの)[変更]→データ型を変更する→[保存]

###その他
 - 独自ドメインでのアクセス時のエラー
 - 常時SSL化+HSTSプリロードについて

####信頼されていないドメインからサーバにアクセスしています。(以下略
`config.php`に`trusted_domains`という行があるので、内容を編集します。

```config/config.php
  'trusted_domains' => 
  array (
    0 => '(アカウント名).sakura.ne.jp',
    1 => '(独自ドメイン)',
  ),
```
###常時SSL化+HSTSプリロード
下記の記事を参考に設定しました。
[３分で出来るHSTSプリロードの設定方法 – 常時SSL化後に必ず行うべき設定](https://labcoat.jp/hsts-preload/)
[httpからhttpsにリダイレクトする方法と注意点について](https://keywordfinder.jp/blog/seo/http-https-redirect/)

#おわりに
はじめてQiitaに投稿しました。
この記事を編集するのに3時間くらいかかっています。

Qiitaにお世話になって3年くらいになりますが、記事を一つ投稿することの大変さを身をもって体感しました。

自分の覚えとして「ここが知りたいな」というところを中心に文字にしてみましたが、所々おかしなところもあるかと思います。
重大な欠陥等がありましたら、ぜひともご指摘くださいませ。

文中のリンク等にもありますが、諸先輩方の貴重な記事、記録を頼りにここまで進めました。
皆様の情報公開にいつも感謝しております:bow_tone1: