# Copyright © 2023 OpenIM. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ----------------------------------------------------------------- # This config file is the template file # --| source: scripts/template/config-tmpl/openim_config.yaml # --| env: scripts/install/environment.sh # --| target: config/config.yaml # ----------------------------------------------------------------- ###################### Zookeeper ###################### # Zookeeper configuration # It's not recommended to modify the schema # # Zookeeper address # Zookeeper username # Zookeeper password zookeeper: schema: "openim" address: [ "127.0.0.1:2181" ] username: "" password: "" ###################### Mysql ###################### # MySQL configuration # Currently, only single machine setup is supported # # Maximum number of open connections # Maximum number of idle connections # Maximum lifetime in seconds a connection can be reused # Log level: 1=slient, 2=error, 3=warn, 4=info # Slow query threshold in milliseconds mysql: address: [ "127.0.0.1:13306" ] username: "root" password: "openIM123" database: "openIM_v3" maxOpenConn: "1000" maxIdleConn: "100" maxLifeTime: "60" logLevel: "4" slowThreshold: "500" ###################### Mongo ###################### # MongoDB configuration # If uri is not empty, it will be used directly # # MongoDB address for standalone setup, Mongos address for sharded cluster setup # Default MongoDB database name # Maximum connection pool size mongo: uri: "" address: [ "127.0.0.1:37017" ] database: "openIM_v3" username: "root" password: "openIM123" maxPoolSize: "100" ###################### Redis configuration information ###################### # Redis configuration # # Username is required only for Redis version 6.0+ redis: address: [ "127.0.0.1:16379" ] username: "" password: "openIM123" ###################### Kafka configuration information ###################### # Kafka configuration # # Kafka username # Kafka password # It's not recommended to modify this topic name # Consumer group ID, it's not recommended to modify kafka: username: "" password: "" addr: [ "127.0.0.1:9092" ] latestMsgToRedis: topic: "latestMsgToRedis" offlineMsgToMongo: topic: "offlineMsgToMongoMysql" msgToPush: topic: "msgToPush" consumerGroupID: msgToRedis: "redis" msgToMongo: "mongo" msgToMySql: "mysql" msgToPush: "push" ###################### RPC configuration information ###################### # RPC configuration # # IP address to register with zookeeper when starting RPC, the IP and corresponding rpcPort should be accessible by api/gateway # Default listen IP is 0.0.0.0 rpc: registerIP: "" listenIP: "0.0.0.0" ###################### API configuration information ###################### # API configuration # # API service port # Default listen IP is 0.0.0.0 api: openImApiPort: [ "10002" ] listenIP: "0.0.0.0" ###################### Object configuration information ###################### # Object storage configuration # # Use minio for object storage # API URL should be accessible by the app # It's not recommended to modify the bucket name # Endpoint should be accessible by the app # Session token # Configuration for Tencent COS # Configuration for Aliyun OSS # It can be set by an environment variable or by a script object: enable: "minio" apiURL: "http://127.0.0.1:10002/object/" minio: bucket: "openim" endpoint: "http://113.90.83.134:10005" accessKeyID: "root" secretAccessKey: "openIM123" sessionToken: "" cos: bucketURL: "https://temp-1252357374.cos.ap-chengdu.myqcloud.com" secretID: "" secretKey: "" sessionToken: "" oss: endpoint: "https://oss-cn-chengdu.aliyuncs.com" bucket: "demo-9999999" bucketURL: "https://demo-9999999.oss-cn-chengdu.aliyuncs.com" accessKeyID: "root" accessKeySecret: "" sessionToken: "" ###################### RPC Port Configuration ###################### # RPC service ports # These ports are passed into the program by the script and are not recommended to modify # For launching multiple programs, just fill in multiple ports separated by commas # For example, [10110, 10111] rpcPort: openImUserPort: [ "10110" ] openImFriendPort: [ "10120" ] openImMessagePort: [ "10130" ] openImMessageGatewayPort: [ "10140" ] openImGroupPort: [ "10150" ] openImAuthPort: [ "10160" ] openImPushPort: [ "10170" ] openImConversationPort: [ "10180" ] openImThirdPort: [ "10190" ] ###################### RPC Register Name Configuration ###################### # RPC service names for registration, it's not recommended to modify these rpcRegisterName: openImUserName: "User" openImFriendName: "Friend" openImMsgName: "Msg" openImPushName: "Push" openImMessageGatewayName: "MessageGateway" openImGroupName: "Group" openImAuthName: "Auth" openImConversationName: "Conversation" openImThirdName: "Third" ###################### Log Configuration ###################### # Log configuration # # Storage directory # Log rotation time # Maximum number of logs to retain # Log level, 6 means all levels # Whether to output to stdout # Whether to output in json format # Whether to include stack trace in logs log: storageLocation: "/root/workspaces/openim/openim-server/log/" rotationTime: 24 remainRotationCount: 2 remainLogLevel: 6 isStdout: false isJson: false withStack: false ###################### Variables definition ###################### # Long connection server configuration # # Websocket port for msg_gateway # Maximum number of websocket connections # Maximum length of websocket request package # Websocket connection handshake timeout longConnSvr: openImWsPort: [ "10001" ] websocketMaxConnNum: 100000 websocketMaxMsgLen: 4096 websocketTimeout: 10 # Push notification service configuration # # Use GeTui for push notifications # GeTui offline push configuration # FCM offline push configuration # Account file, place it in the config directory # JPush configuration, modify these after applying in JPush backend push: enable: "getui" geTui: pushUrl: "https://restapi.getui.com/v2/$appId" masterSecret: "" appKey: "" intent: "" channelID: "" channelName: "" fcm: serviceAccount: "x.json" jpns: appKey: "" masterSecret: "" pushUrl: "" pushIntent: "" # App manager configuration # # Built-in app manager user IDs # Built-in app manager nicknames manager: userID: [ "openIM123456", "openIM654321", "openIMAdmin" ] nickname: [ "system1", "system2", "system3" ] # Multi-platform login policy # For each platform(Android, iOS, Windows, Mac, web), only one can be online at a time multiLoginPolicy: 1 # Whether to store messages in MySQL, messages in MySQL are only used for management background chatPersistenceMysql: true # Message cache timeout in seconds, it's not recommended to modify msgCacheTimeout: 86400 # Whether to enable read receipts for group chat groupMessageHasReadReceiptEnable: true # Whether to enable read receipts for single chat singleMessageHasReadReceiptEnable: true # MongoDB offline message retention period in days retainChatRecords: 365 # Schedule to clear expired messages(older than retainChatRecords days) in MongoDB every Wednesday at 2am # This deletion is just for cleaning up disk usage according to previous configuration retainChatRecords, no notification will be sent chatRecordsClearTime: "0 2 * * *" # Schedule to auto delete messages every day at 2am # This deletion is for messages that have been retained for more than msg_destruct_time (seconds) in the conversation field msgDestructTime: "0 2 * * *" # Secret key secret: "openIM123" # Token policy # # Token expiration period in days tokenPolicy: expire: 90 # Message verification policy # # Whether to verify friendship when sending messages messageVerify: friendVerify: false # iOS push notification configuration # # iOS push notification sound # Whether to count badge # Whether it's production environment iosPush: pushSound: "xxx" badgeCount: true production: false ###################### Third-party service configuration ###################### # Callback configuration # # Callback URL # Whether to enable this callback event # Timeout in seconds # Whether to continue execution if callback fails callback: url: beforeSendSingleMsg: enable: false timeout: 5 failedContinue: true afterSendSingleMsg: enable: false timeout: 5 beforeSendGroupMsg: enable: false timeout: 5 failedContinue: true afterSendGroupMsg: enable: false timeout: 5 msgModify: enable: false timeout: 5 failedContinue: true userOnline: enable: false timeout: 5 userOffline: enable: false timeout: 5 userKickOff: enable: false timeout: 5 offlinePush: enable: false timeout: 5 failedContinue: true onlinePush: enable: false timeout: 5 failedContinue: true superGroupOnlinePush: enable: false timeout: 5 failedContinue: true beforeAddFriend: enable: false timeout: 5 failedContinue: true beforeCreateGroup: enable: false timeout: 5 failedContinue: true beforeMemberJoinGroup: enable: false timeout: 5 failedContinue: true beforeSetGroupMemberInfo: enable: false timeout: 5 failedContinue: true setMessageReactionExtensions: enable: false timeout: 5 failedContinue: true ###################### Prometheus ###################### # Prometheus configuration for various services # The number of Prometheus ports per service needs to correspond to rpcPort # The number of ports needs to be consistent with msg_transfer_service_num in script/path_info.sh prometheus: enable: "false" userPrometheusPort: [ "20110" ] friendPrometheusPort: [ "20120" ] messagePrometheusPort: [ "20130" ] messageGatewayPrometheusPort: [ "20140" ] groupPrometheusPort: [ "20150" ] authPrometheusPort: [ "20160" ] pushPrometheusPort: [ "20170" ] conversationPrometheusPort: [ "20230" ] rtcPrometheusPort: [ "21300" ] thirdPrometheusPort: [ "21301" ] messageTransferPrometheusPort: [ "21400, 21401, 21402, 21403" ] # List of ports