Nextcloudのドメインを変更するとその影響は?
わけあってNextcloudのドメインを変更することになりました。
融通の利くAWSやOCIなどのクラウドサービスに設置したわけではなく、日本の制限のあるレンタルサーバーというのも気にかかります。具体的にはロリポップです。
ドメイン変更は以下を想定しています。
nextcloud.minokamo.xyz
↓
nextcloud.minokamo.tokyo
Nextcloudはデータベース(mysql)を必要としているのでその点も注意が必要です。
データベースを使用する主なCMS一覧
CMS名 | 使用DB | 特徴 |
---|---|---|
WordPress | MySQL / MariaDB | 世界で最も使用されているCMS。豊富なプラグインとテーマ。 |
Drupal | MySQL / PostgreSQL 他 | 柔軟で拡張性が高く、大規模サイト向き。開発者向け。 |
Joomla! | MySQL / PostgreSQL 他 | WordPressとDrupalの中間的存在。中〜上級者向け。 |
Typo3 | MySQL 他 | エンタープライズ向け。学習コストは高め。 |
Craft CMS | MySQL | 開発者フレンドリーでカスタマイズ性が高い。 |
OctoberCMS | MySQL / SQLite / PostgreSQL | LaravelベースのCMS。シンプルで高速。 |
Concrete CMS (旧 Concrete5) | MySQL | ブロックベースのUIで初心者でも操作しやすい。 |
MODX | MySQL | 柔軟なテンプレートシステム。自由度が高い。 |
ECサイト構築ツール(ショッピングサイト)
ツール名 | 使用DB | 特徴 |
---|---|---|
Shopify(+アプリ連携) | 内部DB(クラウド) | SaaS型。設定だけで始められる。 |
Magento (Adobe Commerce) | MySQL | 超高機能、エンタープライズ向け。 |
WooCommerce(WordPressプラグイン) | MySQL | WordPressに組み込む形。 |
EC-CUBE(日本製) | MySQL / PostgreSQL | 日本語対応がしっかりしている。 |
Webアプリケーションフレームワーク
これらはCMSではなく、Webサービスやアプリを構築するための土台です。
フレームワーク | 使用DB | 主な言語 |
---|---|---|
Laravel | MySQL / PostgreSQL 他 | PHP |
Ruby on Rails | SQLite / PostgreSQL 他 | Ruby |
Django | SQLite / PostgreSQL 他 | Python |
Express + Sequelize/Prisma | MySQL / PostgreSQL 他 | Node.js |
Spring Boot | MySQL / Oracle 他 | Java |
ノーコード / ローコードプラットフォーム
ツール名 | DBとの関係 | 備考 |
---|---|---|
Airtable | 独自のDB(表形式) | 表計算感覚でDB管理。APIも豊富。 |
Bubble | 独自DB | ノーコードでアプリ制作。視覚的に設計可能。 |
AppGyver / OutSystems | DBと連携可 | 企業向けローコードプラットフォーム。 |
フォーラム / SNS / 掲示板などのWebアプリ
ツール名 | 使用DB | 用途 |
---|---|---|
Discourse | PostgreSQL | 高機能なフォーラム。 |
phpBB | MySQL / PostgreSQL | 昔ながらの掲示板。 |
Mastodon | PostgreSQL | 分散型SNS。 |
Nextcloudのドメイン変更と共有リンクの挙動について
Nextcloudのドメインを変更する際の設定と、既存の共有リンクへの影響について解説します。
基本的な設定変更方法
調査しているとNextcloudのドメイン変更は、主にconfig.php
ファイルの修正で対応できます。このファイルは例として図の様なディレクトリに配置されています。
具体的には以下の部分を変更します。
'trusted_domains' => [
0 => 'nextcloud.minokamo.xyz', // 古いドメイン
],
を新しいドメインに変更:
'trusted_domains' => [
0 => 'nextcloud.minokamo.tokyo', // 新しいドメイン
],
ドメイン移行時の推奨設定
ドメイン移行期間中は、スムーズな移行のために一時的に両方のドメインを登録しておくことをお勧めします:
'trusted_domains' => [
0 => 'nextcloud.minokamo.xyz', // 古いドメイン
1 => 'nextcloud.minokamo.tokyo', // 新しいドメイン
],
さらに、新しいドメインでの運用に完全に移行するには、overwrite.cli.url
の設定も更新することが重要です:
'overwrite.cli.url' => 'https://nextcloud.minokamo.tokyo',
共有リンクの挙動について
Nextcloudのドメイン変更において、既存の共有リンクの挙動については以下のポイントが重要です:
朗報:適切な設定により共有リンクは新ドメインでも機能する
以下の設定を正しく行うことで、既存の共有リンクを新しいドメインでもそのまま利用できることが確認されています:
'trusted_domains' => [
0 => 'nextcloud.minokamo.tokyo', // 新しいドメインのみ設定
],
'overwrite.cli.url' => 'https://nextcloud.minokamo.tokyo', // 新しいドメインを設定
この設定により、以下のような変換が自動的に行われます:
https://nextcloud.minokamo.xyz/index.php/s/ct82f4TADXjDQqQ
↓
https://nextcloud.minokamo.tokyo/index.php/s/ct82f4TADXjDQqQ
仕組みの解説
Nextcloudでは、共有リンクのトークン部分(例: s/ct82f4TADXjDQqQ
)がデータベースに保存されており、このトークンを基にしてリンクが生成されます。trusted_domains
とoverwrite.cli.url
の設定が正しく行われていれば、システムは新しいドメインを使用してリンクを処理します。
重要なのは、共有トークン自体はドメインに依存せず、Nextcloudシステム内部で一意に管理されているという点です。そのため、適切な設定の下では、ドメインが変わっても同じトークンでアクセスできるようになります。
古いドメインが既に廃棄されている場合
古いドメインを既に廃棄している場合や、IPアドレスとの紐づけを解除している場合は、以下の点に注意が必要です:
1.新しいドメインのみの設定: この場合、trusted_domainsには新しいドメインのみを設定します:
'trusted_domains' => [
0 => 'nextcloud.minokamo.tokyo', // 新しいドメインのみ
],
'overwrite.cli.url' => 'https://nextcloud.minokamo.tokyo',
2.既存の共有リンクについて:
- 古いドメインのリンクを保持していた利用者には、新しいドメインのURLを通知する必要があります
- リンクのトークン部分(
s/ct82f4TADXjDQqQ
)は変わらないため、古いドメインから新しいドメインに置き換えるだけで利用可能です - 例:
https://nextcloud.minokamo.xyz/...
→https://nextcloud.minokamo.tokyo/...
3.データベース変更について:
- 大量の共有リンクがあり、一括で通知するのが難しい場合は、データベースのバックアップを取った上で、
oc_share
テーブルなど関連テーブルの情報を確認・編集することも技術的には可能です - ただし、データベースの直接編集はリスクを伴うため、必ずバックアップを取った上で慎重に行いましょう。
注意点と確認事項
ドメイン変更時には、以下の点も併せて確認してください:
- SSL証明書: 新しいドメインに対応したSSL証明書が正しく設定されているか
- Webサーバー設定: Apache/Nginxの設定で新しいドメインが正しく設定されているか
- DNS設定: 新しいドメインが正しくサーバーIPを指しているか
Nextcloudのドメイン変更は、config.php
のtrusted_domains
とoverwrite.cli.url
の設定を適切に行うことで、既存の共有リンクも新しいドメインでそのまま利用できます。
ドメイン移行の際には、一時的に両方のドメインをtrusted_domains
に登録しておき、移行完了後に古いドメインの設定を削除するという段階的なアプローチがおすすめです。
overwrite.cli.urlとは?
「overwrite.cli.url」はNextcloud がコマンドラインから実行される際や内部処理で生成するリンクの基準となるURLを上書きするための設定項目です。たとえば、Nextcloud をリバースプロキシの背後で運用している場合や、WebサーバーでのアクセスURLと実際のサーバー内部のURLが異なる場合に、このパラメーターで正しい外部向けのURLを指定することで、メール通知やリンク生成が正しく行われるようにします。
また、Nextcloud のインストール時には、環境やアクセス方法に応じて自動的に設定される場合もありますが、必ずしも全ての環境で必須というわけではありません。必要に応じて、後から手動で追加・変更することも可能です。
overwritehostとは?
「overwritehost」は、Nextcloud が自動的に検出するホスト名の代わりに、特定のホスト名を強制的に使用するための設定です。
例えば、リバースプロキシの背後で運用している場合、内部でのリクエストと外部でアクセスされるURLが異なることがあるため、このオプションを使って外部に公開する正しいホスト名を指定することで、リンク生成やリダイレクトなどの動作を正しく行わせることができます。
また、デフォルトのインストール時には「overwritehost」の設定は存在せず、必要な場合に手動でconfig.phpに追加するオプションです。
実践で遭遇した問題と対応策:「この操作は禁止されています」エラー
ドメイン変更後、一見すると共有リンクは新しいドメインでアクセスできるように見えても、実際にファイルを操作しようとすると「この操作は禁止されています」(英語では「this operation is forbidden」)というエラーメッセージが表示されることがあります。

これは、Nextcloud内部のデータベースに古いドメイン情報が残っているために発生する問題です。旧ドメインの場合は正常に表示されるため、Nextcloud内部で使用される一部のリンクやリクエストに、まだ旧ドメインの情報が残っていることが原因です。
古いドメイン情報を特定する
PHPMyAdminなどのデータベース管理ツールを使用して、古いドメインが保存されている場所を特定する手順は以下の通りです:
1.PHPMyAdminにログインし、Nextcloudのデータベースを選択します
2.全テーブルを対象に古いドメインを検索します:
- 「検索」機能を使用し、「検索する文字列」に古いドメイン(例:
nextcloud.minokamo.xyz
)を入力 - または以下のようなSQLクエリを実行:
SELECT TABLE_NAME
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'your_nextcloud_db'
- 各テーブルに対して次のようなクエリを実行:
SELECT * FROM table_name
WHERE some_column LIKE '%nextcloud.minokamo.xyz%';
3.実際の検索結果例:
0 件の一致 (テーブル oc_accounts)
0 件の一致 (テーブル oc_accounts_data)
19031 件の一致 (テーブル oc_activity) 表示 削除
0 件の一致 (テーブル oc_activity_mq)
0 件の一致 (テーブル oc_addressbookchanges)
0 件の一致 (テーブル oc_addressbooks)
0 件の一致 (テーブル oc_appconfig)
0 件の一致 (テーブル oc_appconfig_ex)
0 件の一致 (テーブル oc_authorized_groups)
0 件の一致 (テーブル oc_authtoken)
0 件の一致 (テーブル oc_bruteforce_attempts)
0 件の一致 (テーブル oc_calendarchanges)
0 件の一致 (テーブル oc_calendarobjects)
0 件の一致 (テーブル oc_calendarobjects_props)
0 件の一致 (テーブル oc_calendars)
0 件の一致 (テーブル oc_calendarsubscriptions)
0 件の一致 (テーブル oc_calendar_appt_bookings)
0 件の一致 (テーブル oc_calendar_appt_configs)
0 件の一致 (テーブル oc_calendar_invitations)
0 件の一致 (テーブル oc_calendar_reminders)
0 件の一致 (テーブル oc_calendar_resources)
0 件の一致 (テーブル oc_calendar_resources_md)
0 件の一致 (テーブル oc_calendar_rooms)
0 件の一致 (テーブル oc_calendar_rooms_md)
0 件の一致 (テーブル oc_cards)
2 件の一致 (テーブル oc_cards_properties) 表示 削除
0 件の一致 (テーブル oc_circles_circle)
oc_activity
テーブル: 19,031件の一致oc_cards_properties
テーブル: 2件の一致- その他のテーブルでは一致なし

検索結果の詳細と必要なカラムの特定
Nextcloudのデータベースを検索した結果、以下のテーブルとカラムに古いドメイン情報が含まれていることが判明しました:
oc_activityテーブル:
subject
subjectparams
message
messageparams
file
link
oc_cards_propertiesテーブル:
value
実際のPHPMyAdminでの検索クエリは以下のようになります:
SELECT * FROM `LAA1624080-nc`.`oc_activity`
WHERE (CONVERT(`activity_id` USING utf8) LIKE ‘%nextcloud.minokamo.xyz%’
OR CONVERT(`timestamp` USING utf8) LIKE ‘%nextcloud.minokamo.xyz%’
OR CONVERT(`priority` USING utf8) LIKE ‘%nextcloud.minokamo.xyz%’
OR CONVERT(`type` USING utf8) LIKE ‘%nextcloud.minokamo.xyz%’
OR CONVERT(`user` USING utf8) LIKE ‘%nextcloud.minokamo.xyz%’
OR CONVERT(`affecteduser` USING utf8) LIKE ‘%nextcloud.minokamo.xyz%’
OR CONVERT(`app` USING utf8) LIKE ‘%nextcloud.minokamo.xyz%’
OR CONVERT(`subject` USING utf8) LIKE ‘%nextcloud.minokamo.xyz%’
OR CONVERT(`subjectparams` USING utf8) LIKE ‘%nextcloud.minokamo.xyz%’
OR CONVERT(`message` USING utf8) LIKE ‘%nextcloud.minokamo.xyz%’
OR CONVERT(`messageparams` USING utf8) LIKE ‘%nextcloud.minokamo.xyz%’
OR CONVERT(`file` USING utf8) LIKE ‘%nextcloud.minokamo.xyz%’
OR CONVERT(`link` USING utf8) LIKE ‘%nextcloud.minokamo.xyz%’
OR CONVERT(`object_type` USING utf8) LIKE ‘%nextcloud.minokamo.xyz%’
OR CONVERT(`object_id` USING utf8) LIKE ‘%nextcloud.minokamo.xyz%’)

問題の解決方法:データベース内の置換
特定したテーブル内の古いドメイン情報を新しいドメインに置換するには、以下のSQLクエリを使用します(実行前に必ずデータベースのバックアップを取ってください):
-- oc_activityテーブルの更新(すべての関連カラムを対象に)
UPDATE oc_activity
SET
subject = REPLACE(subject, 'nextcloud.minokamo.xyz', 'nextcloud.minokamo.tokyo'),
subjectparams = REPLACE(subjectparams, 'nextcloud.minokamo.xyz', 'nextcloud.minokamo.tokyo'),
message = REPLACE(message, 'nextcloud.minokamo.xyz', 'nextcloud.minokamo.tokyo'),
messageparams = REPLACE(messageparams, 'nextcloud.minokamo.xyz', 'nextcloud.minokamo.tokyo'),
link = REPLACE(link, 'nextcloud.minokamo.xyz', 'nextcloud.minokamo.tokyo'),
file = REPLACE(file, 'nextcloud.minokamo.xyz', 'nextcloud.minokamo.tokyo')
WHERE
subject LIKE '%nextcloud.minokamo.xyz%' OR
subjectparams LIKE '%nextcloud.minokamo.xyz%' OR
message LIKE '%nextcloud.minokamo.xyz%' OR
messageparams LIKE '%nextcloud.minokamo.xyz%' OR
link LIKE '%nextcloud.minokamo.xyz%' OR
file LIKE '%nextcloud.minokamo.xyz%';
-- oc_cards_propertiesテーブルの更新
UPDATE oc_cards_properties
SET value = REPLACE(value, 'nextcloud.minokamo.xyz', 'nextcloud.minokamo.tokyo')
WHERE value LIKE '%nextcloud.minokamo.xyz%';
これらのクエリを実行するには、PHPMyAdminの「SQL」タブを使用します:
- PHPMyAdminにログインし、Nextcloud用のデータベースを選択
- 上部の「SQL」タブをクリック
- クエリを入力して「実行」ボタンをクリック
- 更新されたレコード数が表示されることを確認
- 再度検索クエリを実行して、置換が成功したか確認
場合によっては、他のテーブルにも古いドメイン情報が残っている可能性があります。各環境に合わせて検索し、必要に応じて更新してください。
「この操作は禁止されています」エラーが続く場合の追加対策
データベース内の古いドメイン情報を置換した後も「この操作は禁止されています」(「this operation is forbidden」)エラーが表示される場合、以下の追加対策を検討してください:
Web Application Firewall(WAF)の確認
実践的な検証の結果、すべてのデータベース置換を正しく行っても、ファイルアクセス時にエラーが表示される場合があります。この問題は、Web Application Firewall(WAF)の設定が原因である可能性があります:
- レンタルサーバーやホスティングサービスでWAFが有効になっている場合、ドメイン変更後に新しいドメインでのアクセスをWAFが不適切にブロックしていることがあります
- 一時的にWAFを無効にするか、新しいドメインのアクセスを許可するようWAFの設定を調整してください
- WAFの無効化はセキュリティリスクを伴うため、必要な調整を行った後は再度有効にすることをお勧めします

重要な注意点
- データベースを直接編集する前に必ずバックアップを取ってください
- レンタルサーバーなど制限のある環境では、データベースのバックアップと復元方法を事前に確認しておくことをお勧めします
- 更新作業は可能な限りメンテナンス時間中に行い、ユーザーの作業に影響が出ないようにしてください
- 各クエリを実行する前に、影響を受けるレコード数を確認するSELECTクエリでテストすることをお勧めします
- WAFの設定を変更する場合は、セキュリティ上のリスクを理解した上で、必要最小限の変更にとどめてください
注意点と確認事項
ドメイン変更時には、以下の点も併せて確認してください:
- SSL証明書: 新しいドメインに対応したSSL証明書が正しく設定されているか
- Webサーバー設定: Apache/Nginxの設定で新しいドメインが正しく設定されているか
- DNS設定: 新しいドメインが正しくサーバーIPを指しているか
まとめ
Nextcloudのドメイン変更は、表面的にはconfig.php
のtrusted_domains
とoverwrite.cli.url
の設定変更だけで済むように見えますが、実際には内部データベースにも古いドメイン情報が残っている可能性があります。
完全なドメイン移行のためには:
- 基本設定の変更:
config.php
のtrusted_domains
とoverwrite.cli.url
を更新 - 移行期間の対応: 一時的に両方のドメインを
trusted_domains
に登録 - データベース内の古いドメイン情報の検出と更新: 特に
oc_activity
テーブルなどを確認 - 動作確認: 共有リンクでのファイル操作が正常に行えるか確認
これらのステップを慎重に実施することで、スムーズなドメイン移行が可能になります。特に重要なシステムや多数の共有リンクを使用している環境では、事前にテスト環境でのドメイン変更検証もお勧めします。
ロリポップでサブドメインの作成について
似たようなnextcloudという名前であり、混乱しそうですが落ち着いて進めていきます。問題は、ロリポップで公開 (アップロード) フォルダを同じにするとどうなるか心配なので、一度別のファイルがあまりないフォルダを複製しておき作成のテストをしてみました。以下のように表示されます。
公開 (アップロード) フォルダ【 betelstar 】は下記ドメインが利用しています。
- http://star.betelgeuse.work/
このまま設定した場合、http://test.minokamo.xyz/ では上記ドメインと同じ内容が表示されます。

しかし、そのまま設定してもフォルダが新規で作成され、フォルダが空になることはありませんでした。これが心配だったのです。ですのでnextcloudという同じ公開 (アップロード) フォルダを2重で作成しても問題はなさそうです。
IPアドレスとドメインの紐づけ
まずはIPアドレスとドメインの紐づけをします。同じIPアドレスに複数のドメインを紐づけるのは問題ありません。
現在の設定: nextcloud.minokamo.xyz → 118.27.125.232
新しく設定したいのは: nextcloud.minokamo.tokyo → 118.27.125.232
DNSの設定変更の手順としては:
新しいドメイン(nextcloud.minokamo.tokyo)のAレコードを作成
Type: A
Name: nextcloud
Value: 118.27.125.232
DNSの伝播を待つ(通常15分〜48時間)
dig nextcloud.minokamo.tokyo や nslookup nextcloud.minokamo.tokyo で確認できます
新ドメインでアクセスできることを確認
必要に応じて、古いドメイン(nextcloud.minokamo.xyz)の設定は残しておく
移行期間中は両方のドメインが使えるようにしておくと安全です