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


はじめに

この記事はなに

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

この記事の状況

  • 初心者
  • さくらのレンタルサーバ
    • スタンダードプラン以上を推奨(理由は後述)
  • Nextcloud
    • Web installer

Nextcloudのインストール

Webサーバどのプラン?

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

Nextcloud Webインストーラの取得

Nextcloudにアクセス。
Get NextcloudServerDownload for server</>Web Installer
1. Right-click here and save the file to your computer のリンク部分をクリックしてファイルをローカルに保存

setup-nextcloud.phpを取得しました

Webインストールの手順

インストールの前準備

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

インストール

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

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

管理者アカウントを作成してください

任意のユーザ名とパスワードを入力します。
ストレージとデータベースの▼をクリック
データベースは[MySQL/MariaDB]を選択し、必要事項を入力します。
前準備でメモをしたそれぞれの項目を入力しましょう。
データベースのユーザ名:ユーザ名
データベースのパスワード:接続先パスワード
データベース名:データベース名
localhost:データベースサーバ

おめでとうざいます。

プライベートクラウドを満喫しましょう

最新版への更新

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

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

Initializing

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

誤って[Yes(for usage with command line tool)]をクリックした場合

ひとまず慌てずに深呼吸して、コーヒーでも飲んで落ち着いてください☕️

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

警告とその対処

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

PHPのメモリ制限は推奨値512MBを下回ります。

レンタルサーバ コントロールパネル→スクリプト設定→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は1年間の秒数を表しています。

メモリキャッシュが設定されていません。

config/config.php
  'memcache.local' => '\OC\Memcache\APCu',

このインスタンスには推奨されるPHPモジュールがいくつかありません。(中略) imagick

さくらのレンタルサーバーでImageMagickを使用する方法を参考に設定しました。

www/php.ini
extension=imagick.so

big intがなんとか(警告文メモ忘れました)

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

その他

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

信頼されていないドメインからサーバにアクセスしています。(以下略

config.phptrusted_domainsという行があるので、内容を編集します。

config/config.php
  'trusted_domains' => 
  array (
    0 => '(アカウント名).sakura.ne.jp',
    1 => '(独自ドメイン)',
  ),

常時SSL化+HSTSプリロード

下記の記事を参考に設定しました。
3分で出来るHSTSプリロードの設定方法 – 常時SSL化後に必ず行うべき設定
httpからhttpsにリダイレクトする方法と注意点について

おわりに

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

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

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

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