Docker for WindowsでNextcloudサーバ構築

Macでは、比較的簡単にNextcloudを動かす事ができました。

今度は、Docker for Windowsで動かしてみたいと思います。

バージョンは、17.03.1を使いました。新しいバージョンを使う理由があります。以前は、Windowsではdocker execが使えず、大変不便でした。しかし、このバージョンでは、execを使ってコンテナ内でbashが使えます。素晴らしい!


Doker for Windowsのインストール

  1. Docker for Windowsをインストールします。
    よくわからない場合は、こちらの記事をご参照下さい。

  2. Dockerの設定→Shared Drivesを開きます。Nextcloudを運用するディスクドライブで、Sharedを有効にします。
    下図は、CドライブのSharedを有効にしたところです。C:\docker\nextcloudフォルダで動かそうと思います。

Nextcloudのインストール

  1. Nextcloudを運用するフォルダを作成します。
  2. Nextcloudの公式リポジトリ情報を拝見すると。
    docker-composeを使う場合の例は、こちらのページを参照とあります。
    docker-compose.yamlとnginx.confファイルをダウンロードして使用させて頂きます。
  3. docker-compose.yamlファイルを編集します。SSLを使う場合の問題の記事を参考に、portsとvolumes行を追加します。MYSQL_ROOT_PASSWORDもここで指定します。

    ※17.9.20追記:「nextcloud:11-fpm」を「nextcloud:fpm」に変更しました。すでにバージョン11をダウンロードして利用している場合、docker-compose downで停止→「nextcloud:fpm」に書換えてから、こちらの方法(502 Bad Gatewayの時)で最新バージョンに更新できるようです。
  4. nginx.confファイルを編集します。SSLを使う場合の問題の記事を参考にSSL対応に書き換えます。listen, ssl_certificate, ssl_certificate_key行を追加します。
  5. SSLのキーペアを作成するために、OpenSSLをインストールします。
    こちらからバイナリをダウンロードしてインストールします。
    Win64のLight版で問題ありませんでした。
  6. DLLのインストール先はbinを指定します。
  7. インストールが完了したら、システム環境変数のPathを編集。
  8. 一番下に、OpenSSLインストール先のbinフォルダを追加します。
  9. キーペアを作成します。

    画面の指示に従い、必要な情報を入力します。
  10. dockerを起動すると「ネットワークがない」エラーが出るので、予めネットワークを作っておきます。

  11. docker-composeを起動します。

    イメージのダウンロードが始まります。
  12. 全てのコンテナが起動しているかどうか、確認します。

    TCPポート80番と443番を使用します。
  13. Webブラウザで、Nextcloudにアクセスします。
    https://localhost
    502 Bad Gatewayが表示されても、しばらく待ってからアクセスし直してみてください。起動に数分かかるようです。
    しばらく経つと、初期設定画面が表示されます。日本語に対応していますね。
  14. 設定情報を入力し、「セットアップを完了します」をクリックします。
    • ユーザ名: 任意のユーザ名
    • パスワード: 任意のパスワード
    • データベースを設定してください: MySQL/MariaDBを選択
    • データベースのユーザ名:root
    • データベースのパスワード: docker-compose.yamlに記入したもの
    • データベース名: nextcloud
    • データベースのホスト名: db
  15. すると・・・・またチミかね!
    owncloudをインストールしたときと同じエラーが。
    Docker for Windowsのトラブルシューティングの一番最初のところに、「Docker for Windowsの共有ボリュームは0755のパーミッション。変えられない。SMBを使ってるから。」という記述があります。回避策として、nextcloudのphpを変更します。
  16. コマンドプロンプトから、nextcloudのappコンテナの中でbashを起動します。

  17. エディタ(nanoやvim)をインストールします。
  18. エディタで、util.phpを編集します。

    926行付近 ‘0’を’5’に変えます。2箇所あります。
    編集前:

    編集後:

    ※18.7.26追記:Docker バージョン18.06.0の場合、次のように変更する必要がありました。
  19. Nextcloudのメイン画面が表示されましたでしょうか?

前回、ownCloudをインストールした時と似た流れでしたが。

今回は、Docker for windowsが新しくなり、execが使えるようになりました。そのため、コンテナの中でphpを編集する事ができて、設定が少し楽になりました。

実用になりますでしょうか・・・試してみましょう!


※17.11.9追記

util.phpにパッチを適用する方法

dockerをリセットした時など、パーミッション0770エラーが再発する場合があります。その時、util.phpをすぐに書換えられるように、次の内容のパッチファイル(util.php.patch)を用意しておくと便利です。

  1. docker psでnextcloudのappコンテナのIDを確認します
  2. パッチファイルをコピーします
  3. appコンテナでbash実行
  4. パッチを適用します
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク