はじめに
以下記事ではメッセージの保管場所について紹介しましたが
本記事ではブラウザ上にて以下のように「管理」から設定できる項目がデータベースのどこに保管されるかについて調査した際のメモです。
結論から言えば「rocketchat」データベースの「rocketchat_settings」コレクションです。
環境情報
- Rocket.Chat Version: 3.2.2
MongoDBのコレクション一覧
初回ログオン直後のMongoDBのコレクションとドキュメント数の一覧は以下でした。
rs0:PRIMARY> db.getCollectionNames().forEach(function(v){print(v , db.getCollection(v).count());}); _raix_push_app_tokens 0 instances 1 meteor_accounts_loginServiceConfiguration 0 meteor_oauth_pendingCredentials 0 meteor_oauth_pendingRequestTokens 0 migrations 1 rocketchat__trash 0 rocketchat_analytics 0 rocketchat_apps 0 rocketchat_apps_logs 0 rocketchat_apps_persistence 0 rocketchat_avatars 1 rocketchat_avatars.chunks 1 rocketchat_avatars.files 1 rocketchat_canned_response 0 rocketchat_credential_tokens 0 rocketchat_cron_history 12 rocketchat_custom_emoji 0 rocketchat_custom_sounds 0 rocketchat_custom_user_status 0 rocketchat_export_operations 0 rocketchat_federation_dns_cache 0 rocketchat_federation_keys 2 rocketchat_federation_room_events 0 rocketchat_federation_servers 0 rocketchat_import 0 rocketchat_integration_history 0 rocketchat_integrations 0 rocketchat_invites 0 rocketchat_livechat_agent_activity 0 rocketchat_livechat_custom_field 0 rocketchat_livechat_department 0 rocketchat_livechat_department_agents 0 rocketchat_livechat_external_message 0 rocketchat_livechat_inquiry 0 rocketchat_livechat_office_hour 7 rocketchat_livechat_page_visited 0 rocketchat_livechat_priority 0 rocketchat_livechat_tag 0 rocketchat_livechat_trigger 0 rocketchat_livechat_unit_monitors 0 rocketchat_livechat_visitor 0 rocketchat_message 1 rocketchat_message_read_receipt 0 rocketchat_notification_queue 0 rocketchat_oauth_apps 1 rocketchat_oembed_cache 0 rocketchat_permissions 993 rocketchat_reports 0 rocketchat_roles 11 rocketchat_room 1 rocketchat_sessions 1 rocketchat_settings 894 rocketchat_smarsh_history 0 rocketchat_statistics 1 rocketchat_subscription 1 rocketchat_uploads 0 rocketchat_user_data_files 0 rocketchat_webdav_accounts 0 system.views 1 ufsTokens 0 users 2 usersSessions 1 view_livechat_queue_status 0
上記を見れば分かりますが以下のコレクションに情報が大量に保管されています。
rocketchat_settings 894
このコレクションにあたりをつけて中身を確認すると情報が格納されていました。
rocketchat_settingの該当部分
例えばLDAP周りの情報(ホスト名や接続ポート)は以下のように格納されています。
{ "_id" : "LDAP_Host", "_updatedAt" : ISODate("xx"), "autocomplete" : true, "blocked" : false, "createdAt" : ISODate("xx"), "enableQuery" : "{\"_id\":\"LDAP_Enable\",\"value\":true}", "group" : "LDAP", "hidden" : false, "i18nDescription" : "LDAP_Host_Description", "i18nLabel" : "LDAP_Host", "packageValue" : "", "secret" : false, "sorter" : 3, "ts" : ISODate("xx"), "type" : "string", "value" : "HOSTNAME", "valueSource" : "packageValue" } { "_id" : "LDAP_Port", "_updatedAt" : ISODate("xx"), "autocomplete" : true, "blocked" : false, "createdAt" : ISODate("xx"), "enableQuery" : "{\"_id\":\"LDAP_Enable\",\"value\":true}", "group" : "LDAP", "hidden" : false, "i18nDescription" : "LDAP_Port_Description", "i18nLabel" : "LDAP_Port", "packageValue" : "389", "secret" : false, "sorter" : 4, "ts" : ISODate("xx"), "type" : "string", "value" : "389", "valueSource" : "packageValue" }
今回はIP/ホスト名の箇所を「HOSTNAME」ポート番号を「389」としていました。
"value" : "HOSTNAME"
"packageValue" : 389"
他の情報に関しても同様の形式で確認できます。
ちなみにドキュメントをfind()
にて全量表示する際はデータベースに負荷がかかる点はご注意ください。
終わりに
設定情報のみを移したければ上記のコレクションに対して以下の記事でバックアップを移行が可能です。
なかなかDBの実体を意識することはないですが、気になる方はぜひ中身を覗いてみてください。