Nextcloud は、初期インストールが終わっただけでは運用に必要な設定が揃いません。trusted domains、Redis、mail、proxy、preview、maintenance window、LDAP などを整理して、アプリケーションとして使える状態に近づける必要があります。
この記事では、Ubuntu 26.04 上の Nextcloud に対して、occ を使って system configuration を設定する流れを整理します。Nextcloud 本体の配置や PHP-FPM / Nginx / MariaDB の土台は base 記事に分け、ここでは config.php に反映される運用設定を主語にします。
occ config:system:setで Nextcloud の運用設定を管理する- trusted domains、Redis、mail、proxy、preview、maintenance window を整理する
- admin email と LDAP 連携の入口を確認する
- secret を含む設定をコマンド履歴に残しにくい形で扱う
- Nextcloud base と config の責務を分ける
Nextcloud config で扱う範囲
Nextcloud config は、Nextcloud がすでに初期インストール済みで、/var/www/html/config/config.php が存在している前提で行います。まだ本体配置や occ maintenance:install が終わっていない場合は、先に base の手順を確認します。
| 領域 | 設定するもの |
|---|---|
| trusted domains | アクセスを許可する FQDN や localhost |
| Redis / memcache | APCu、Redis、file locking |
| SMTP host、port、認証、送信元アドレス | |
| proxy | 外部 proxy を使う環境での通信経路 |
| preview | プレビュー生成サイズ、同時実行数、メモリ上限 |
| maintenance window | 負荷の高い処理を寄せる時間帯 |
| LDAP | user_ldap app と LDAP 接続情報 |
occ が実行できることを確認する
まず occ が www-data で実行できるか確認します。Nextcloud の設定変更は root で直接 config.php を編集するより、occ config:system:set を使った方が安全です。
cd /var/www/html
sudo -u www-data /usr/bin/php /var/www/html/occ status
sudo -u www-data /usr/bin/php /var/www/html/occ config:system:get trusted_domains --output=jsonocc status が失敗する場合、PHP module、DB 接続、ファイル権限、Nextcloud の初期インストール状態を先に確認します。設定作業は、Nextcloud が読める状態になってから進めます。
trusted domains を設定する
Nextcloud は trusted domains に含まれていない host 名からのアクセスを拒否します。内部 FQDN、外部 FQDN、localhost など、実際に使う名前を明示します。
cd /var/www/html
sudo -u www-data /usr/bin/php occ config:system:delete trusted_domains
sudo -u www-data /usr/bin/php occ config:system:set trusted_domains 0 --value=localhost
sudo -u www-data /usr/bin/php occ config:system:set trusted_domains 1 --value=nextcloud.example.internal
sudo -u www-data /usr/bin/php occ config:system:get trusted_domains --output=jsontrusted domains を入れ替える場合は、現在の値を確認してから作業します。誤って必要な FQDN を消すと、Web 画面へアクセスできなくなるためです。
Redis と memcache を設定する
Nextcloud では、APCu を local cache、Redis を distributed cache と file locking に使う構成が一般的です。Redis を Unix socket で使う場合は、redis.host に socket path を指定し、redis.port は 0 にします。
cd /var/www/html
sudo -u www-data /usr/bin/php occ config:system:set memcache.local --type=string --value='\OC\Memcache\APCu'
sudo -u www-data /usr/bin/php occ config:system:set memcache.distributed --type=string --value='\OC\Memcache\Redis'
sudo -u www-data /usr/bin/php occ config:system:set memcache.locking --type=string --value='\OC\Memcache\Redis'
sudo -u www-data /usr/bin/php occ config:system:set redis host --type=string --value=/run/redis/redis-server.sock
sudo -u www-data /usr/bin/php occ config:system:set redis port --type=integer --value=0Redis socket を使う場合は、PHP Redis module が読み込まれていること、www-data が Redis socket にアクセスできること、PHP-FPM が再起動済みであることを確認します。
mail 設定を行う
Nextcloud から通知メールを送る場合、SMTP の設定を system configuration に入れます。SMTP password などの secret は shell history に残りやすいため、実運用では環境変数や一時ファイルなど、扱い方を決めてから実行します。
cd /var/www/html
sudo -u www-data /usr/bin/php occ config:system:set mail_smtpmode --type=string --value=smtp
sudo -u www-data /usr/bin/php occ config:system:set mail_sendmailmode --type=string --value=smtp
sudo -u www-data /usr/bin/php occ config:system:set mail_smtphost --type=string --value=mail.example.internal
sudo -u www-data /usr/bin/php occ config:system:set mail_smtpport --type=integer --value=587
sudo -u www-data /usr/bin/php occ config:system:set mail_smtpauth --type=boolean --value=true
sudo -u www-data /usr/bin/php occ config:system:set mail_smtpname --type=string --value=nextcloud-smtp-user
sudo -u www-data /usr/bin/php occ config:system:set mail_smtppassword --type=string --value='change-this-password'
sudo -u www-data /usr/bin/php occ config:system:set mail_from_address --type=string --value=nextcloud-noreply
sudo -u www-data /usr/bin/php occ config:system:set mail_domain --type=string --value=example.internalここでは例として password を直接書いていますが、実際には避けた方がよいです。記事として重要なのは、mail 設定も occ config:system:set で型を指定して管理できる、という点です。
proxy、地域、maintenance window を設定する
閉域環境や proxy 必須環境では、Nextcloud から外部へ出る通信の proxy 設定が必要になることがあります。また、電話番号の既定地域や maintenance window は、運用時の挙動に影響します。
cd /var/www/html
sudo -u www-data /usr/bin/php occ config:system:set proxy --type=string --value=http://proxy.example.internal:8080
sudo -u www-data /usr/bin/php occ config:system:set default_phone_region --type=string --value=JP
sudo -u www-data /usr/bin/php occ config:system:set maintenance_window_start --type=integer --value=4
sudo -u www-data /usr/bin/php occ config:system:set serverid --type=string --value=nextcloud.example.internalmaintenance_window_start は、重いメンテナンス処理を開始してよい時間帯を示します。常時利用される環境では、ユーザー影響が少ない時間に寄せます。
preview 生成の上限を設定する
画像やファイルの preview 生成は便利ですが、サイズや並列度を無制限にすると負荷になりやすいです。Nextcloud の用途に合わせて、preview のサイズ、同時実行数、メモリ上限を決めます。
cd /var/www/html
sudo -u www-data /usr/bin/php occ config:system:set preview_max_x --type=integer --value=1024
sudo -u www-data /usr/bin/php occ config:system:set preview_max_y --type=integer --value=1024
sudo -u www-data /usr/bin/php occ config:system:set preview_max_scale_factor --type=integer --value=6
sudo -u www-data /usr/bin/php occ config:system:set preview_max_filesize_image --type=integer --value=10
sudo -u www-data /usr/bin/php occ config:system:set preview_concurrency_all --type=integer --value=2
sudo -u www-data /usr/bin/php occ config:system:set preview_concurrency_new --type=integer --value=1
sudo -u www-data /usr/bin/php occ config:system:set preview_max_memory --type=integer --value=512preview 設定は、CPU、メモリ、ストレージ I/O に影響します。小規模環境では控えめにし、必要に応じて後から調整する方が安全です。
管理者メールアドレスを設定する
管理者ユーザーのメールアドレスは、通知や初期運用確認で必要になります。system configuration ではなく user setting として設定します。
cd /var/www/html
sudo -u www-data /usr/bin/php occ user:setting admin settings email admin@example.internaladmin ユーザー名は環境に合わせます。LDAP 連携後に管理者ユーザーをどう扱うかは、ローカル管理者と外部認証ユーザーを分けて設計します。
LDAP 連携を有効化する
Nextcloud で LDAP を使う場合は、user_ldap app を有効化し、LDAP config を作成してから接続先、base DN、filter、属性を設定します。認証そのものではなく、Nextcloud 側が LDAP をどう読むかの設定です。
cd /var/www/html
sudo -u www-data /usr/bin/php occ app:enable user_ldap
sudo -u www-data /usr/bin/php occ ldap:show-config
sudo -u www-data /usr/bin/php occ ldap:create-empty-config
sudo -u www-data /usr/bin/php occ ldap:set-config s01 ldapHost ldaps://ldap.example.internal
sudo -u www-data /usr/bin/php occ ldap:set-config s01 ldapPort 636
sudo -u www-data /usr/bin/php occ ldap:set-config s01 ldapAgentName 'cn=bind-ro,ou=system,dc=example,dc=internal'
sudo -u www-data /usr/bin/php occ ldap:set-config s01 ldapAgentPassword 'change-this-password'
sudo -u www-data /usr/bin/php occ ldap:set-config s01 ldapBase 'ou=main,ou=tenants,dc=example,dc=internal'
sudo -u www-data /usr/bin/php occ ldap:set-config s01 ldapBaseUsers 'ou=users,ou=main,ou=tenants,dc=example,dc=internal'
sudo -u www-data /usr/bin/php occ ldap:set-config s01 ldapBaseGroups 'ou=groups,ou=main,ou=tenants,dc=example,dc=internal'
sudo -u www-data /usr/bin/php occ ldap:set-config s01 ldapLoginFilter '(&(objectClass=inetOrgPerson)(uid=%uid))'
sudo -u www-data /usr/bin/php occ ldap:set-config s01 ldapUserFilter '(objectClass=inetOrgPerson)'
sudo -u www-data /usr/bin/php occ ldap:set-config s01 ldapGroupFilter '(&(objectClass=groupOfNames))'
sudo -u www-data /usr/bin/php occ ldap:set-config s01 ldapConfigurationActive 1LDAP password も secret です。記事中の値は例であり、実環境では secret の投入方法を決めてから設定します。LDAP 連携では、bind DN、base DN、user filter、group filter、表示名属性、UUID 属性、group membership 属性を混同しないことが重要です。
設定値を確認する
設定後は、主要な system configuration と LDAP config を確認します。設定したつもりで反映されていない、型が違う、path が違う、といった問題をここで潰します。
cd /var/www/html
sudo -u www-data /usr/bin/php occ config:system:get trusted_domains --output=json
sudo -u www-data /usr/bin/php occ config:system:get memcache.local
sudo -u www-data /usr/bin/php occ config:system:get redis host
sudo -u www-data /usr/bin/php occ config:system:get mail_smtphost
sudo -u www-data /usr/bin/php occ config:system:get maintenance_window_start
sudo -u www-data /usr/bin/php occ ldap:show-config
sudo -u www-data /usr/bin/php occ status| 確認対象 | 見るポイント |
|---|---|
| trusted domains | 実際にアクセスする FQDN が含まれているか |
| Redis | socket path、port 0、PHP Redis module、権限が合っているか |
| SMTP host、port、認証情報、送信元 domain が合っているか | |
| proxy | 閉域環境で外部通信が必要な場合に proxy が設定されているか |
| preview | サイズや同時実行数が過剰でないか |
| LDAP | base DN、filter、属性、active 状態が合っているか |
まとめ
Nextcloud config は、Nextcloud が動き始めた後に運用設定を整える段階です。trusted domains、Redis、mail、proxy、preview、maintenance window、LDAP などは、すべて Nextcloud の使い勝手と安定性に関わります。
重要なのは、設定を直接 config.php に手で書き込むことではなく、occ で型と値を意識して反映し、確認コマンドで現在値を読める状態にすることです。base と config を分けておくと、Nextcloud の初期構築と運用設定の責務が混ざりにくくなります。
Ubuntu Server の運用項目を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。



