手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 26.04 Nextcloud config – config.php と運用設定を整える

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 / memcacheAPCu、Redis、file locking
mailSMTP host、port、認証、送信元アドレス
proxy外部 proxy を使う環境での通信経路
previewプレビュー生成サイズ、同時実行数、メモリ上限
maintenance window負荷の高い処理を寄せる時間帯
LDAPuser_ldap app と LDAP 接続情報

occ が実行できることを確認する

まず occwww-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=json

occ 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=json

trusted domains を入れ替える場合は、現在の値を確認してから作業します。誤って必要な FQDN を消すと、Web 画面へアクセスできなくなるためです。

Redis と memcache を設定する

Nextcloud では、APCu を local cache、Redis を distributed cache と file locking に使う構成が一般的です。Redis を Unix socket で使う場合は、redis.host に socket path を指定し、redis.port0 にします。

コマンド
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=0

Redis 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.internal

maintenance_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=512

preview 設定は、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.internal

admin ユーザー名は環境に合わせます。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 1

LDAP 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 が含まれているか
Redissocket path、port 0、PHP Redis module、権限が合っているか
mailSMTP host、port、認証情報、送信元 domain が合っているか
proxy閉域環境で外部通信が必要な場合に proxy が設定されているか
previewサイズや同時実行数が過剰でないか
LDAPbase DN、filter、属性、active 状態が合っているか

まとめ

Nextcloud config は、Nextcloud が動き始めた後に運用設定を整える段階です。trusted domains、Redis、mail、proxy、preview、maintenance window、LDAP などは、すべて Nextcloud の使い勝手と安定性に関わります。

重要なのは、設定を直接 config.php に手で書き込むことではなく、occ で型と値を意識して反映し、確認コマンドで現在値を読める状態にすることです。base と config を分けておくと、Nextcloud の初期構築と運用設定の責務が混ざりにくくなります。

参考書籍
参考書籍
Advanced Ubuntu Administration and Management Best Practices

Ubuntu Server の運用項目を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。

Amazon で見る

このリンクは Amazon アソシエイトリンクです。

次に読む記事

Ubuntu 26.04 サーバー管理ガイド
Ubuntu 26.04 Nextcloud config – config.php と運用設定を整える

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る