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
コメント