ロリポップサーバーへのNextCloud導入

鯖構築関連

なんとなくレンタルサーバの設定を見ていて300GB中35MBしか使われてなくて月額440円ほど払ってるのも勿体ないなと思って見てました。
バックアップのファイル置き場に出来ないかなとググってたのですがNextCloudなるフリーウェアを発見。

グーグルのクラウドストレージと同じことが出来るらしい。かつ大手のクラウドなどと違って自分のストレージだから危険が危ないファイルをアップして気が付いたらバンされてたなんてこともない。
なんだか素晴らしいものを発見してしまった。

さっそく入れてみたのだけれど、癖がすごい。あとあと再構築とかしそうな予感がするので構築手順をメモ。

あくまでも個人用のメモなのでインストール部分は解りやすくするような画像など省きます。

ロリポップの設定(サブドメイン作成)


サブドメインの作成。NextCloud用のサブドメインを作る。
外部からの接続用アドレスになる。
公開(アップロード)フォルダはNextCloudの資産を入れる場所になるのでそれっぽい名前を付ける。

ロリポップの設定(独自SSL設定)


作成したサブドメインの独自SSLを有効にする。
場所はロリポップ管理画面の左メニューのセキュリティから独自SSL証明書導入を選択。

ロリポップの設定(データベース作成)


NextCloudが利用する為のDBを作成する。
データベース名はなんでも良いのでサブドメインと同じ名前にしといた。

ロリポップの設定(WAF設定)


NextCloudのリリースが完了するまでWAF設定を解除する。

ロリポップの設定(ガード設定)


NextCloudのリリースが完了するまでガード設定を解除する。

NextCloudのセットアップ資産の取得


インストールするためのsetup用phpを公式サイトから取得する。

以下からsetup-nextcloud.phpを取得する。

nextcloud.com
https://nextcloud.com/install/#instructions-server

自分のPC環境に入れる訳ではないので上記サイトに移動したら左側のアイコンでDOWNLOAD SERVERとかかれているところを探す。
そのアイコンの右に配置されたアコーディオンからCOMMUNITY PROJECTSをクリック。
文章の中にhereとかかれたアンカーあるので、右クリックから名前を付けてリンクを保存する。

NextCloudのインストール。


最初のロリポップのサブドメイン作成時に設定した公開(アップロード)フォルダに取得したphpを放り込む。

ここからが結構曲者。良く解らん挙動をするので気が付いたらインストール出来てた状態だった。

ブラウザで設定したサブドメインのsetup-nextcloud.phpにアクセスする。

セットアップウィーザードが表示されNextボタンが表示される。

Nextボタンをクリックするとリリースするフォルダ名の入力欄の表示画面になる。

デフォルトでNextCloudが書かれてるのでとくに変更しなければそのままNextボタンを押す。
※セキュリティ的には変えた方が良い。

するとここでphpのエラーが吐き出された。

ChatGPTにそのままエラーを張り付けて聞いてみるとzipが存在しないエラーらしい。

存在するか確かめて下さいとのこと。

zip?なんのこっちゃ。そんな手順どこにも書かれてないが。ということでsetup-nextcloud.phpを覗いてみたところ同じフォルダにnc.zipが存在しなければ公式サイトに自動で取りに行くコードになってた。

ここからは推測なんだけど、自動でロリポップにアップロード出来るファイルサイズが20Mとか制限があった気がするのでエラーになって自動でダウンロード出来ないのではないかと。

仕方が無いのでphpにかかれているコードのURLから直接アクセスしてみたらnc.zipがダウンロードできた。200Mちょいあった。

それをFTPでセットアップphpと同じところに強制的にアップしてもう一度ブラウザでアクセスしてみた。

すると今度は違うエラーを吐き出した。もう面倒臭くなってきたのであきらめるかと思いつつ適当にググって見たりして結局よぐわがんね。とか思って怒りのF5アタックしたら今度はphpエラーでは無くNextCloud側からのメッセージで既に入っとるわというエラーメッセージが出ました。

なんなんだ。意味がわからん。どうしろと。と思ったのだけれどすでに入ってると言ってるんだからブラウザでインストールしたURLを叩いてみたら初期設定画面が出てきました。

これも推測なんだけど、zipを展開するのに時間がかかるから何らかの原因で本当ならプログレスが表示されるもそれが出来ずエラーメッセージを吐き出してた。

展開が完了したから時間経過で再アクセスするとすでに入ってるわいと怒られた。

多分こんな感じ。

こんなトラブルはググっても他に見つけられなかったので俺だけなのかもしれない。

初期設定


まともなインストールが出来なかったので一抹の不安を感じながらも問題無く動くっぽいので初期設定をした。

管理者アカウントを作成して下さいのメッセージが出てるので、任意で管理者のユーザー名、パスワードを設定します。

その下にストレージとデータベース設定がありデータフォルダーのテキスト入力欄は触らず、その下のデータベースを設定して下さいでMySQL/MariaDBを選択します。

データベースのユーザー名とパスワード、データベース名(LA○○-設定した名前のやつ)、ホスト名(~lolipop.lanとか書かれてるやつ)の入力欄が表示されるのでロリポップで設定したDBの情報を入力します。

そこまで入力したらインストールボタンを押します。

インストールボタンという名称は、この時点ですでにされとるやろって感じで違和感を感じるが、クリックすると一瞬でこんばんはという表示の画面が表示されます。

今後ログイン直後に表示するダッシュボードってやつの画面です。

これでインストールは完了です。

ロリポップの設定(WAF、アタックガード)


最初の方で解除していたセキュリティ設定のWAFとアタックガードを有効に戻します。

NextCloudの設定(個人設定)


一番の右上にあるユーザアイコンをクリックして個人設定を行います。

氏名とメールアドレスを設定します。

ここに設定したメールアドレスにNextCloudからのメールが届きます。

下の方にスクロールしてプロフィールの公開範囲を設定します。

自分一人しか使わないので必要無いかも知れませんが、すべて隠すにしておきます。

NextCloudの設定(管理者設定)

まずは基本設定にあるメールサーバーを設定します。

ロリポップで新しくメアドを作成しその設定をここに記載します。

このメアドからNextCloudの情報が送信されます。

送信モード:SMTP
暗号化:SSL
送信元アドレス:※設定不要
サーバーアドレス: smtp.lolipop.jp : 465
認証:チェックする
資格情報:メアドとメールパスワードを設定します。

次に左のサイドバーにある管理からセキュリティ設定を行います。

ここに二要素認証があるので必要に応じてONにします。

これはログイン時などにユーザー名、パスワードを入力すると設定したメールアドレスにワンタイムパスワードを送信し、二重のセキュリティが可能になります。

次にサーバーサイド暗号化のトグルボタンがありますがクリックしても有効になりません。

ファイルサーバとして使うためセキュリティを考慮して有効にしたいところです。

この機能を有効にするためにはひと手間必要になります。

右上のユーザアイコンから+アプリを選択します。

「アプリ」を開いたら、その中にある「Default encryption module」の「有効にする」をクリックします。

パスワードを求められるので管理者用のパスワードを入力します。

これで先ほどのサーバーサイド暗号化を有効に出来ます。

戻って有効にすれば完了です。

NextCloudの設定(概要設定)

右上のユーザーアイコンをクリックして管理者設定をクリックすると最初に概要画面に遷移します。

ここにはNextCloudの設定などの問題点などが表示されますので、ひとまず赤文字の重大な問題と橙文字の次に重要なものを出来るだけ潰します。

>リバースプロキシヘッダーの設定が正しくないか、信頼できるプロキシからNextcloudにアクセスしています。

config/config.phpに次の記載を追加する。(この次の設定もconfig.phpの追記なので同時にやるとよろし)

‘trusted_proxies’ =>
array (
0 => ‘{サーバーのIPアドレス}’,
),

ロリポップサーバのIPアドレスを調べるのにSEOチェキ!というサイトを利用した。
nextcloudのログイン画面のURLを入れてやればサーバドメイン情報の部分にアドレスが見えます。
それを設定してあげればOK。

>電話番号がうんちゃらかんちゃら

./config/config.phpに’default_phone_region’ => ‘JP’, を追加する。

>PHPメモリが512Mありません。

PHPメモリの設定は.htaccessへ記述をする場合はロリポップのPHP設定画面から
php_value, php_flagを利用可能にする
の項目をONにする。

ただあまり.htaccessは触りたくないので.user.iniの方で設定します。
こちらの設定でエラーが解消されたのでこっちで良いと思います。

.user.iniに、PHP関連の設定を追記する場合は、php_value, php_flagを利用可能にする必要はないです。

WinSCPを使った設定方法をメモリます。
FTPでnextcloudの資産入っているルートを開きます。index.htmlやindex.phpがあるところです。

適当なところで右クリックをして「新規」→「ファイル」を選択します。
ファイル名の入力ダイアログが立ち上がるので「.user.ini」と入力します。
こちらはWinSCPの仕様だと思うのですがすでに存在してるファイルを新規で入力するとそのファイルの中身を更新出来ます。
すでにいくつかの設定が書かれてますが、その内容の最後に追加します。

php_value upload_max_filesize 512M
php_value post_max_size 512M
php_value memory_limit 512M

タイムアウト設定などもしても良いのですが、あまり通信速度の遅い環境で使うことが無いので上記内容だけ足しました。

保存して完了です。概要画面を更新してみてメモリが~のエラーが解消してればOKです。

参考情報:
サーバーのPHPメモリ上限(memory_limit)の変更方法。
https://sologaku.com/make-website/how-to-change-memory-limit/
Nextcloud on Lollipop rental server
https://www.kokobit.com/archives/1757
Nextcloudのエラー対策
https://www.eyansore.com/?p=6288

トラブルシューティング:
設定が完了して一先ずスマホを接続し、スマホの画像を自動転送できるようになったのでしめしめと思っていたのですが、PCのWEBブラウザからファイルをアップしようとすると10k程度のテキストファイルですら良く解らん謎のメッセージが出てアップロードできませんでした。
スマホからのデータで200Mのサイズのものは問題無くアップ出来てるのに、PCのブラウザからはアップロードできないという現象です。
また、ブラウザからは完全にアップロードできないかというとそうでもなく小さいファイルサイズのもので16kぐらいのものは一部アップロード出来たりします。
ここを解消するのに丸一日費やしたのですが、原因はロリポップのWAF設定でした。

WAF設定を解除すればPCのブラウザから問題無くアップロードできます。
で、この辺は使えるようになれば細かいとこまで調べるつもりも無いので想像なのですが、いったんWAF認証を抜けるとアドレスで判定しているのかWAF設定を有効に戻してもエラーにならなくなりました。

別の環境からも試してみて同じ現象が起きるようであれば、一時的にWAFを解除して何かしらのファイルをアップして問題なかったら有効に戻すで良さそうです。

コメント

タイトルとURLをコピーしました