NFS を使って NextCloud を Docker で立ち上げる際の注意点

このページは、NextCloud で NFS を使う際の注意点と Docker Compose のサンプルについて書かれています。

NextCloud コンテナー #

NextCloud の Docker コンテナーは Docker Hub で公式に公開されております。 また、Docker Compose を使った基本的な設定もそこに説明されております。

NFS を使うときの注意点 #

NextCloud で使用する NFS の設定をする際に “no_root_squash” オプションを付ける必要があります。 これがないと NextCloud コンテナーを起動する際に Permission denied のエラーが出て、立ち上がりません。 この原因は、NextCloud コンテナー内で root ユーザーがディレクトリーの権限を変更しようとすることに起因しているのではないかと思われます。 NextCloud の設定やデータ用のディレクトリーの所有者は www-data ユーザーに変更されます。

OpenMediaVault での NFS の設定例 #

メニューから「Services ⇒ NFS」を開き、「Shares」タブを表示します。

「Add」もしくは「Edit」ボタンから編集画面を開き、次のように設定すればよいです。

OMV NFS

Docker Compose のサンプル #

このサンプルでは NextCloud 用のデータベースとして、PostgreSQL を使用しています。 PostgreSQL 用のデータも NFS を利用しており、NextCloud 用の NFS と同様に “no_root_squash” オプションを利用しています。

version: '3.2'

services:
  db:
    image: postgres
    restart: always
    volumes:
      - db:/var/lib/postgresql
    environment:
      - POSTGRES_DB=nextcloud
      - POSTGRES_USER=nextcloud
      - POSTGRES_PASSWORD=nextcloud

  app:
    image: nextcloud
    restart: always
    ports:
      - 8080:80
    volumes:
      - nextcloud:/var/www/html
      - nextcloud-config:/var/www/html/config
      - nextcloud-apps:/var/www/html/custom_apps
      - nextcloud-themes:/var/www/html/themes
      - nextcloud-data:/var/www/html/data
    environment:
      - POSTGRES_DB=nextcloud
      - POSTGRES_USER=nextcloud
      - POSTGRES_PASSWORD=nextcloud
      - POSTGRES_HOST=db
      - REDIS_HOST=redis

  redis:
    image: redis
    restart: always

volumes:
  db:
    driver_opts:
      type: nfs
      o: "addr=<NFS server addr>,hard,nfsvers=4"
      device: ":/<NFS path>"
  nextcloud:
    driver_opts:
      type: nfs
      o: "addr=<NFS server addr>,hard,nfsvers=4"
      device: ":/<NFS path>"
  nextcloud_config:
    driver_opts:
      type: nfs
      o: "addr=<NFS server addr>,hard,nfsvers=4"
      device: ":/<NFS path>"
  nextcloud_apps:
    driver_opts:
      type: nfs
      o: "addr=<NFS server addr>,hard,nfsvers=4"
      device: ":/<NFS path>"
  nextcloud_themes:
    driver_opts:
      type: nfs
      o: "addr=<NFS server addr>,hard,nfsvers=4"
      device: ":/<NFS path>"
  nextcloud_data:
    driver_opts:
      type: nfs
      o: "addr=<NFS server addr>,hard,nfsvers=4"
      device: ":/<NFS path>"