QNAP Container Station Nextcloud Server 構築
「TS-h1283XU-RP」上のコンテナ(Container Station)で Nextcloud Server を構築します。
基本のセットアップ方法については、「QNAP QuTS hero 5 セットアップ」をご覧ください。
ページ内目次
Nextcloud って何?
自前でホスティング可能なオンラインストレージのソフトウェアです。
Dropbox, Google Drive, OneDrive, iCloudと同様のサービスを自前で運用することが出来ます。
何か問題が発生したときに自分で問題を解決する必要がありますが、電気代だけで維持できるのが魅力的です。
容量もサーバーにHDD等を増やすことで自由に増やせます。
有名どころのオンラインストレージソフトウェアでは、以下のようなものが見つかります。
私は昔からNextcloudを使用しているのですが、動作速度を不満に思うようになりました。
動作させているサーバーのスペックが低いのが主原因だと思われますが、全てにおいて動作が遅いです。
そのため、別のソフトウェアも再度検討したいです。
検討において、今回はユーザー管理のためにLDAPを必須とし、出来ればE2EEのファイル暗号化が可能なものが望ましいです。
調べると、LDAPについては上記全ソフトウェアが対応しています。
そもそもの前提として、ownCloudからフォークしたのがNextcloudなので同じようなソフトウェアとなっています。
どちらもPHPで動作しているもので、昔からある有名なプロジェクトです。
ownCloud Infinite Scaleについては、ownCloudが新たにGo言語で書き直した新たなソフトウェアで、かなり高速に動くようです。
しかし、根本的に設計変更されてしまっていて、サーバー側ではユーザーのファイルは専用フォーマットにて管理されます。
なにかあったときに、コンバートして復旧できるのか少し不安です。
OpenCloudはownCloud Infinite Scaleからのフォークで同様です。
Seafileはかなり望みがありますが、3人以上の使用については有償となるようなので、今回は除外します。
つまり、PHP言語で書かれたownCloud・Nextcloudもしくは、Go言語で書かれたownCloud Infinite Scale・OpenCloudから選択することになります。
E2EEに関して調べてみると、ownCloud Infinite Scaleはエンタープライズ版が必要で個人では厳しく、OpenCloudは最近のプロジェクトということもあり実装未定。
微妙と言われているが、一応E2EEにも対応するのは、ownCloud・Nextcloudとなっています。
その中でも、ownCloudはownCloud Infinite Scaleの方に移行していく気がします。
NextcloudはPHPベースのまま開発を続けるという話です。
結局のところ、Nextcloudを使い続けるのが無難なのでは?というところになってきました。
今回はNextcloudを再度整備してみましょう。
※データベースサーバーが必要なので、以下の環境整備がされている前提で話を進めます。
Nextcloud Server を Container Station に設定
詳細はこちらにある通りで、このDockerイメージを動かす場合には、いくつかの設定が必要になります。
latest タグや lts タグがありますが、メジャーアップデート(Ver31系から32系等)が発生する可能性があるためバージョン指定で運用します。
事前準備
データの保存先としてディレクトリを作成します。
以下のディレクトリを準備しておきます。
- /share/Container/nextcloud/
コマンド例:
mkdir -p /share/Container/nextcloud/
MySQL Server 事前準備
Nextcloudではデータベースサーバーが必須となります。
上記リンクの通りにMySQLサーバーが構築済みとして話を進めます。
MySQL側でデータベースと専用のユーザーを作成しておく必要があります。
mysql> create database nextcloud;
Query OK, 1 row affected (0.01 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| nextcloud |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
mysql> create user 'nextcloud'@'localhost' identified by 'Passw0rd12345';
Query OK, 0 rows affected (0.02 sec)
mysql> create user 'nextcloud'@'10.0.3.%' identified by 'Passw0rd12345';
Query OK, 0 rows affected (0.01 sec)
mysql> select user, host from mysql.user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| root | % |
| nextcloud | 10.0.3.% |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| nextcloud | localhost |
| root | localhost |
+------------------+-----------+
7 rows in set (0.00 sec)
mysql> grant all privileges on nextcloud.* to nextcloud@localhost;
Query OK, 0 rows affected, 1 warning (0.02 sec)
mysql> grant all privileges on nextcloud.* to 'nextcloud'@'10.0.3.%';
Query OK, 0 rows affected (0.00 sec)
mysql> show grants for nextcloud@localhost;
+------------------------------------------------------------------+
| Grants for nextcloud@localhost |
+------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `nextcloud`@`localhost` |
| GRANT ALL PRIVILEGES ON `nextcloud`.* TO `nextcloud`@`localhost` |
+------------------------------------------------------------------+
2 rows in set (0.00 sec)
mysql> show grants for 'nextcloud'@'10.0.3.%';
+-----------------------------------------------------------------+
| Grants for nextcloud@10.0.3.% |
+-----------------------------------------------------------------+
| GRANT USAGE ON *.* TO `nextcloud`@`10.0.3.%` |
| GRANT ALL PRIVILEGES ON `nextcloud`.* TO `nextcloud`@`10.0.3.%` |
+-----------------------------------------------------------------+
2 rows in set (0.00 sec)
mysql>QNAP上のDockerは、Container Stationの環境設定を見るとわかりますが、lxcbr0ブリッジとして、10.0.3.0/24のネットワークを使用するようです。
そのため、今回のNextcloudのコンテナからMySQLのコンテナに接続をかけると、そのネットワークを経由します。
MySQLはネットワーク指定ごとのユーザーになるためlocalhost以外にもそのネットワーク(10.0.3.%)のユーザーを作成する必要があります。
ユーザー名は同名でもネットワーク指定が違うと別ユーザー扱いになるため、同じパスワードで2つのユーザーを作成したということになります。
なお、実運用に入る場合、ストレージのファイルと共に、データベースサーバーのデータベースも重要なデータとなりますので、定期的にバックアップして保存するようにしましょう。
データベースのデータが失われると、各種メタデータ、ユーザー情報、アプリのデータ(ファイルの実体以外すべて)が失われます。
Dockerコンテナの設定
「Container Station」にはDocker Hubの仕様から、全てのタグが列挙されないというバグがあります。
タグが多いイメージに関して、Docker Hub APIはタグを取得する際の件数制限があり、全てのタグが表示されません。
Nextcloudのプロジェクトに関しては、非常にタグが多いプロジェクトで、古いバージョンの列挙で止まってしまいますので、自分でタグを入力して進める方法を取ります。
「Container Station」を開き、「コンテナ」タブから「作成」ボタンを押してコンテナ作成をします。
「コンテナの作成」という画面が表示されるので、イメージ欄に「nextcloud:31-apache」と入力して「次へ」を押して進みます。
「コンテナを作成する前にレジストリからイメージをプルしてみてください。」にチェックを入れなくてもローカルにイメージが無い場合にはプルされるので大丈夫です。
コンテナ再作成等、アップデートしたいときにチェックを入れましょう。
イメージ欄に入力したものはタグの指定であり、現段階ではバージョン31を使用するという意味になります。
そのため、使いたいバージョンに応じて適宜書き換えてください。
タグ一覧はこちらから見れます。
基本的に私はStableのリリースを使いたいです。先程のページを見ると「stable」も「31」も「31-apache」も同じものを指すようです。
メジャーバージョンがあがると「stable」タグが指す先が32など次のバージョンに変わっていくと思うので、今回は「31」を使います。
「31」も「31-apache」も同じものでApache内蔵版を指すため、明示的にわかりやすいタグの「31-apache」を使用することとしました。
今後バージョンアップがある際は、バックアップを取った後、タグを「32-apache」に書き換えてコンテナを再作成するような形でアップデートしていきます。
- 名前:任意(わかりやすいもの)
- 設定・再起動ポリシー:「停止時以外」
- ネットワーク設定・露出ポート:ホスト 8888/tcp コンテナ 80/tcp
- ネットワーク設定・デフォルトの Web URL ポート:無効
デフォルトでは80番ポートを使用するようになっていますが、Webサーバーでポートを使用しているため8888にしました。
こちらを参考に。
「詳細設定」をクリックして、詳細設定に進む。
「コマンド」ページ
後述する「External storage support アプリ」を使用しないのであれば、この設定は必要ありません。
外部ストレージとして接続する場合に、SMB/CIFSの選択肢があるのですが、このDockerイメージにはsmbclientがインストールされていないことからエラーが表示されます。
よって、コンテナ起動時に以下のコマンドを入れてインストール済みの状態にするということです。
- コマンド:Override「-c 'apt-get update && apt-get install -y smbclient libsmbclient-dev redis-server && (pecl install smbclient || true) && docker-php-ext-enable smbclient && redis-server --daemonize yes && /entrypoint.sh apache2-foreground'」
- エントリポイント:Override「bash」
コマンドは長いですが1行で入れます。
peclコマンドについて、すでに対象のパッケージがインストールされていた場合にエラーを返すため、正常終了を返すためにtrueを追加しています。
後述するファイルロックのパフォーマンス改善で同時にRedisも入れています。
コンテナの起動にすこし時間がかかるようになるため、「External storage support アプリ」を使用しない場合は上記設定は入れなくていいと思います。
「環境」ページ
「新しい変数の追加」ボタンで以下の内容を増やす。
- 変数「TZ」値「Asia/Tokyo」
「ストレージ」ページ
ボリューム「/var/www/html」設定があるため、それを一旦削除。
「ボリュームの追加」ボタン横の矢印から「マウントされたホストのパスをバインド」を選択して追加。
- ホスト「/Container/nextcloud」に対してコンテナ「/var/www/html」RWのままで
(なお、ボリュームの設定のままでも、ボリュームに /share/Container/nextcloud のパスで設定を入れると勝手にマウントになります)
この設定でコンテナ内のディレクトリをファイルシステムにマッピングさせます。
また、名前解決を行うために以下の設定を入れるといいでしょう。
ホスト「/Container/hosts」に対してコンテナ「/etc/hosts」をROで追加
これはLDAP接続のドメイン名解決のためなので必須ではないです。
なぜ「/Container/hosts」ファイルにするのかは、「QNAP QuTS hero 5 セットアップ」をご覧ください。
確実な時刻同期のために「/etc/localtime」をROで追加してもいいかもしれません。
以上で最低限起動する設定になっています。
「完了」でコンテナを作成しましょう。
$ pwd
/share/Container/nextcloud
$ ls
3rdparty/ core/ LICENSES/ remote.php
apps/ cron.php nextcloud-init-sync.lock* resources/
AUTHORS custom_apps/ occ* REUSE.toml
composer.json data/ ocs/ robots.txt
composer.lock dist/ ocs-provider/ status.php
config/ index.html package.json themes/
console.php index.php package-lock.json version.php
COPYING lib/ public.php
$コンテナが起動すると、このような形でファイルが作成され、UID/GIDは33:33になるようです。
Nextcloud Server のインストール
先程設定した8888番ポートにブラウザでアクセスすると初期インストール画面が表示されます。
初期状態ではSQLiteを使用する設定になっているので、「ストレージとデータベース」をクリックしてデータベースを設定します。
安全のためスクリーンショットでは入力していない部分があります。
管理者アカウント名とデータベースのホスト名は入力して進めてください。
データベースのホスト名はlocalhostではコンテナが別なので接続できません。
QNAPのIPアドレスもしくは名前解決可能なホスト名を入力します。
デフォルトポートで動いていればポート指定は必要ありません。
データフォルダーについてはそのままで大丈夫です。
インストールが進むと推奨アプリのインストール画面となります。
あとからインストール可能なので今回はスキップします。
最初にログインした際は中央に新着情報等の画面が表示されます。
特に設定するものでもないので閉じてしまってもOKです。
Nextcloud Server の初期設定
インストールが終わると動作しはじめると思いますが、様々な警告が表示されると思います。
管理者でログイン後の画面から、右上のメニューボタンから「管理者設定」を開きます。
管理の中の「概要」を開くと、「セキュリティ&セットアップ警告」という表示になります。
ここに解決すべき問題がリストアップされるので、本番運用の前に解消していきましょう。
(バージョンアップ等でも問題がでる場合がありますので、定期的に確認するようにするといいです)
以下、警告の解決と設定を進めていきます。
なお、設定ファイルは以下の位置に生成されているので確認しておきましょう。
/share/Container/nextcloud/config/config.php
HTTPSに関する設定(リバースプロキシ設定)
今回はDockerコンテナはHTTPのまま、リバースプロキシでHTTPSに対応します。
Apacheにリバースプロキシの設定を入れます。
VirtualHostで以下の内容を追加しました。
ProxyPass / http://[QNAPのIPアドレス]:8888/
ProxyPassReverse / http://[QNAPのIPアドレス]:8888/
ProxyPreserveHost On
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Real-IP "%{REMOTE_ADDR}s"
RequestHeader append X-Forwarded-For "%{REMOTE_ADDR}s"
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
Header always unset X-Frame-Options
Apacheの設定の話は、「QNAP QuTS hero 5 セットアップ」をご覧ください。
X-Frame-Optionsをunsetしているのは、QNAPのApache設定のグローバルにすでに設定が入っているためです。
このコンテナからも送出されるため、VirtualHostでunsetしておかないとヘッダーが複数回送られてしまいます。
curl -I https://リバースプロキシで設定したドメイン名/
curl -I http://[QNAPのIPアドレス]:8888/
Curlコマンドで見比べるとX-Frame-Options: SAMEORIGINヘッダーが増えている。
また、Nextcloudの設定も続けて行います。
設定ファイル中の "trusted_domains" にドメインを追加しておきます。
$ vi /share/Container/nextcloud/config/config.php
24行目付近
'trusted_domains' =>
リバースプロキシしたドメイン名を追加しておく。
31行目付近
'overwrite.cli.url' => 'https://[リバースプロキシしたドメイン名]',
ドメインの書き換えをする。
また、以下の内容を追記しておく
'overwriteprotocol' => 'https',
'trusted_proxies' =>
array (
0 => '[lxcbr0のネットワークアドレス(例:10.0.3.0/24)]',
),
'forwarded_for_headers' =>
array (
0 => 'HTTP_X_REAL_IP',
1 => 'HTTP_X_FORWARDED_FOR',
),
リバースプロキシで設定するためDockerのブリッジのIPを指定しておきます。
管理者画面のセキュリティを見ると「ブルートフォースIPホワイトリスト」の表示でリモートアドレスがわかります。
ChromeではセキュアDNSがデフォルトで有効になっていて、ローカルにDNSサーバーがあっても無視してグローバルIPを名前解決するようです。
問題が判明するまで時間がかかりました・・・。
設定反映のためにコンテナを再起動しましょう。
Redisに関する設定
コンテナ起動時にインストールしたRedisを使用する設定です。
「データベースがトランザクションファイルロックに使われています。」の警告を消します。
ファイルロックのみ取り扱うためデータの永続化は必要ないです。
設定ファイルに以下の内容を追記します。
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
'host' => 'localhost',
'port' => 6379,
],
コンテナ内にインストールしたのでlocalhostで大丈夫です。
設定反映のためにコンテナを再起動しましょう。
電話地域に関する設定
「ご使用のシステムには、デフォルトの電話地域が設定されていません。」との警告を消すために以下の内容を追記します。
'default_phone_region' => 'JP',
設定反映のためにコンテナを再起動しましょう。
mimetypeマイグレーション
「1つ以上のmimetypeマイグレーションが利用できます。」という警告について。
書かれている通りに
occ maintenance:repair --include-expensive
コマンドを実行すればいいです。
今回はDockerコンテナで動いているので、QNAPからは
docker exec -u www-data [コンテナ名 or コンテナID] php occ maintenance:repair --include-expensive
と実行すれば解決します。
基本設定 - バックグラウンドジョブ - Cron 設定
Nextcloudはバックグラウンドで様々な処理をする関係で、バックグラウンドジョブの実行が不可欠です。
初期設定はAjaxとなっていて、ユーザーがブラウザを開いた時点で実行されるようになっています。
裏で勝手に実行しておいたほうが良いので、QNAPに設定を入れコンテナの外からCronで叩くようにします。
設定をCronに変更して、以下の通りCronの設定をQNAPに入れましょう。
公式情報を見る限り、通常の方法でcrontabを編集すると、アップデート時等に上書きされてしまうとあります。
そのため、QNAP公式が推奨する編集方法を使用します。
sudo vi /etc/config/crontab
直接crontabを編集します。
末尾に5分おきに実行する設定を追記します。
*/5 * * * * docker exec -u www-data [コンテナ名 or コンテナID] php cron.php > /dev/null 2>&1
保存したら、以下のコマンドで反映します。
sudo crontab /etc/config/crontab && sudo /etc/init.d/crond.sh restart
あとは動作を確認してみましょう。
なお、crontabはシステム側で適宜編集されていて、アップデートのタイミング等で追記されていますので、末尾に追加したとしてもそれが末尾のままにはなりません。
よって編集の際は入力した行を検索するところから始めることになります。
Cron設定に変更した場合、以下の警告が表示されます。
「サーバーにはメンテナンスウィンドウの開始時間が設定されていません。」
設定ファイルに以下の内容を追記します。
たとえば、値が 1 の場合、これらのバックグラウンド ジョブは UTC の午前 1 時から午前 5 時の間だけ実行されます。
'maintenance_window_start' => 1,
日本標準時の場合、UTC+9のため、設定した値に9時間を追加した時間から4時間の間にジョブが実行されることになります。
つまり、1と設定した場合は、実際には10時から14時に実行。
15と設定すれば0時から4時、21と設定すれば6時から10時、という具合になるでしょう。
一番使用されない時間にバックグラウンドで処理をしたいので、夜中や明け方の適当な時間などがいいかもしれません。
基本設定 - メールサーバー
メール設定も入れておきます。
Gmailを使用して送る設定を入れます。
- https://support.google.com/a/answer/176600?hl=ja
- https://support.google.com/mail/answer/185833?hl=ja
この辺を参考にして、アプリパスワードを作成しておきます。
- 送信モード:SMTP
- 暗号化:None/STARTTLS→SSLに変更
- 送信元アドレス:環境に応じて
- サーバーアドレス:smtp.gmail.com
- ポート:465
- 認証:「認証を必要とする」チェックを入れて
- 資格情報:ログインに使用するメールアドレスとアプリパスワードを入力
「メールを送信」ボタンでテストしてみましょう。
(ユーザーのプロフィールに設定されたメールアドレスに送信されるので事前に設定しましょう)
基本設定 - ファイルの互換性
「Windowsとの互換性を強制」をオンにしておきます。
Windowsで使用できないファイル名を使用するとWindowsで同期が出来なくなるのでそれの対策です。
Windowsだけ使用している環境であればそもそも問題は発生しませんが、MacやLinuxなどの混在環境では問題が出てくると思います。
共有 - 共有のプライバシー設定
サーバー上の他のユーザーが連絡先に一覧表示されてしまうためいくつかの設定を無効にしておきます。
- 共有ダイアログでアカウント名の自動入力を許可し、システムのアドレス帳へのアクセスを許可します:トグル無効に変更
- フルネーム入力時にオートコンプリートを完全一致で許可する:トグル無効に変更
後述するLDAP設定でユーザーをインポートすると、連絡先も一気に表示が増えてしまうので、基本無効にしたいです。
Nextcloud Server のアプリ設定
もともとインストールされているアプリに関しては、右上のメニューボタンから「アプリ」を開き「無効なアプリ」で一覧表示できます。
「有効にする」をクリックすることで簡単にアプリを有効化できます。
あまり不必要にアプリを入れていくと、アップデートの際に最新バージョンに対応しないということもあるので気をつけましょう。
Default encryption module アプリ
暗号化機能を有効にするためのモジュールですが、Nextcloudにおいてはあまり意味がありません。
キーファイルがディスク上に保存されるので、容易に復号化できてしまう上に、フォルダ構造やファイル名はそのままです。
(ディスクに書き込む際にファイルの中身だけ暗号化するようです)
キーとファイルの紐づけにデータベースが必要なため、データベースが喪失した場合にファイルの復号化が出来なくなります。
つまりはファイルにアクセスされた場合に一定のセキュリティが担保されるのでは?という話は現実には違い、
Nextcloudはデータベースとの接続パスワードは設定ファイルに平文で保存するので結局意味がないと私は思います。
今回のNextcloudにおいては暗号化は無しで運用します。
LDAP user and group backend アプリ
有効にすると管理者設定内に「LDAP/AD統合」という項目が出現します。
例として「 QNAP Container Station LLDAP Server 構築」設定済みとします。
LLDAPを使用する場合には以下に設定例があるのでこちらも参考に。
まず設定するにはLDAPサーバーのホスト名とポートを入力します。
例:ldap-readonlyユーザーをユーザーDNとして照会をかける場合
- ホスト名:ldaps://ldap.example.com
- ポート:6360
- ユーザーDN:uid=ldap-readonly,ou=people,dc=ldap,dc=example,dc=com
- パスワード:そのユーザーのパスワード
そして、ユーザーを照会するためのユーザーDNとパスワードを入力したら「資格情報を保存」ボタンを押します。
ここから「ベースDNを検出」ボタンが使えるようになり、上部のタブもクリックできるようになります。
ベースDNは「dc=ldap,dc=example,dc=com」などと入力されると思いますが、検出できない場合には手動で入力しましょう。
もちろん、環境に合わせて設定してください。
「続ける」ボタンを押す前に、いくつか設定しておくことがあります。
(この時点では「続ける」ボタンの横に「設定が不完全です」と表示されると思います)
「ベースDNをテスト」ボタンを押すと、実際に接続が施行されて取得できたエントリ数が表示されると思います。
以下の設定を入れてLDAP設定を続けましょう。
ユーザー
- このオブジェクトクラスからのみ:「inetOrgPerson」→「person」に変更
このままだとLDAP側のadminユーザーや、バインドしたユーザーも列挙されてしまうため、防ぎたい場合は以下のようにする。
「LDAPクエリの編集」を押して以下のように書き換え
(&(objectclass=person)(!(uid=admin))(!(uid=ldap-readonly)))
例としてpersonクラス中のuid=adminと、uid=ldap-readonlyを除外する設定。
環境に応じて書き換えしてください。
LDAP側でNextcloudを使用可能なユーザーのグループを作成している場合には、そのグループ指定でも構わないと思います。
ログイン属性
- LDAP/ADメールアドレス:チェックを入れる
ユーザー名以外にもメールアドレスでのログインを可能にするため。
グループ
今回は、全ユーザーを前提とするので、特に設定しませんでした。
詳細設定 - 特殊属性
- メール属性:「mail」に設定
これを入れておかないと、ユーザーのプロフィールにメールアドレスが反映されません。
エキスパート設定 - 内部ユーザー名
- 内部ユーザー名属性:「uid」に設定
この設定を入れないと、デフォルトではuuidでユーザーフォルダが生成されます。
/share/Container/nextcloud/data
ディレクトリを見たときにユーザーを判別しやすいようにuid(ユーザーID)に変更します。
LDAP以外にもローカルユーザーが存在して、名前が被る可能性がある場合は、設定しないほうがいいとは思います。
ここまで設定を入力したら、「サーバー」タブに戻り「続ける」ボタンを押して進みます。
横のタブに移動していくので、「グループ」タブに移動するまでボタンを押していけば設定完了と思われます。
しばらくするとLDAPサーバーとユーザーの同期が行われ、アカウントが自動で生成されるはずです。
(管理者ユーザーがメニュー内のアカウントでアカウント一覧を見ることでディレクトリ作成処理が進むような?)
設定が途中の段階で、LDAPの警告がログに記録されることがあると思います。
ログファイルの削除については後述。
External storage support アプリ
有効にすると管理者設定内に「外部ストレージ」という項目が出現します。
UID/GIDをユーザーごとに切り替えるには、SMB/CIFSの利用が不可欠です。
なお、コンテナ作成時にコマンドページでsmbclientをインストールするコマンドを設定していない場合、SMB/CIFSが使用できません。
Nextcloudの使い方
こちらから、「Nextcloud Files」をダウンロードして利用します。
各種OS向けに提供されていますし、iOS/Android向けのアプリも提供されています。
運用メモ
運用にあたって行ったことを書き連ねていきます。
ログ削除の方法
/share/Container/nextcloud/data/nextcloud.log
ログはこのファイルに記録されているので0バイトにすれば良いです。
ユーザー情報の確認
docker exec -u www-data [コンテナ名 or コンテナID] php occ user:info [ユーザー名]
LDAP連携を確認するのに使いました。
