docker-composeでNextcloud+Nginxの環境構築

Phamtom gaming PCにcent OS7をインストールしてNginxをセットしたところ,なぜか,Nginxが上手く作動しない(涙).でも,nextcloudだけをdocker-composeで起動したところ,そちらはなぜかアクセス可能.それならば,もはや,nginxもdockerで管理しちゃおうという作戦に出たお話.

Docker-composeでnextcloud+nginxの環境構築

一番良かったのが公式のgithubレポジトリーのexamples. ここに,ssl接続有りの場合,let’s encryptを使う場合,http接続の場合,データベースがapachかmariaDBの場合と色々な場合分けに関してのdocker-composeファイルセットがある.ここを参照して適宜変えると環境構築終了(このurlを伝えたかった記事でした).

https://github.com/nextcloud/docker/tree/master/.examples

Docker-composeの設定を少しいじる

上記サイトのファイルで修正を加えるとしたら,nextcloudは,何かあったとき,(例えば消去されたデータを復旧したいとき,データをユーザーガン無視で取り出したいとき)などは,ssh接続などで直接サーバー内のディレクトリーを操作して取り出したくなるときが有る.そのときにvolumeをマウントしていないとそういった作業が出来ないので,mariaDBもnextcloudで展開されるディレクトリーもvolumeでローカルに指定するようにする.こうしておくと,幸いにも誤って docker-compose down -v を打ったとしてもデータが吹き飛ぶことはない.

以下がその設定の仕方.元はこれ.volumesのdriver_opts:以下のマッピングが変更点.
https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/insecure/mariadb/fpm

version: '3'

services:
  db:
    image: mariadb
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    restart: always
    volumes:
      - db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=
    env_file:
      - db.env

  app:
    image: nextcloud:fpm-alpine
    restart: always
    volumes:
      - nextcloud:/var/www/html
    environment:
      - MYSQL_HOST=db
    env_file:
      - db.env
    depends_on:
      - db

  web:
    build: ./web
    restart: always
    ports:
      - 8080:80
    volumes:
      - nextcloud:/var/www/html:ro
    depends_on:
      - app

volumes:
  nextcloud: 
    driver_opts:
      type: none
      device: /path/to/docker-compose/my_nextcloud
      o: bind
  db: 
    driver_opts:
      type: none
      device: /path/to/docker-compose/my_db
      o: bind

docker-compose up を打つ前に,docker-compose.yml があるディレクトリーで,my_nextcloud と my_db のディレクトリーを作成しておくこと.

nextcloudでuploadしたファイル群は,my_nextcloud/data/<user>/files の下に存在する.

httpsもドメイン指定して,docker回すだけで出来るので楽ですね.

メモとしては,https通信をローカルで実現しようと,オレオレ認証局,証明書を作成しようとしたところ,上手く出来なかった.ブラウザーの問題,proxyの問題,色々絡み合って居たのだと思う.残念.だった...

Nextcloudの運用について少し

Nextcloudではファイルの管理のために,admin,group adminの機能があるが,これら二つは管理下にあるユーザーのPWを自由に変更出来てしまうため,ファイルの共有の範囲,管理者の倫理がちゃんとしていないと事件が起きる.
例えば,違うユーザーがそれぞれgroup adminを担っており,かつ,お互いにお互いのgroupに所属しているとする.このとき,group adminは自分以外のgroup adminのPWを変更出来てしまうので,変更させられる側のgroupのファイルは窃盗しようと思えば容易にすることが出来る.これを防ぐためには,1グループにつきgroup adminのユーザー1つ立て,かつそのgroup adminは他のgroupに属さないようにしておく,といった解決方法がある.

また,ファイルの所有者の問題もあるため,以下のサイトのベストプラクティスに従うのが良いと考える.
【Blog】従来のファイルサーバーと異なるファイル管理の考え方

group adminが他のユーザーのPWをいじれないように出来ないか模索したがそのような手法はないようだった...

以下のサイトも運用の際に,参考になった.
User management — Nextcloud latest Administration Manual latest documentation
Nextcloud の2段階認証
【エラーコード】HTTPステータスコードの原因一覧
Resetting password does not work · Issue #713 · nextcloud/docker

docker その他
スポンサーリンク
あきとしのスクラップノート

コメント

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