# The class cannot be named by Pascal or camel case. # If it is not used, the corresponding structure will not be set, # and it will not be read naturally. serverversion: 2.3.7 #---------------Infrastructure configuration---------------------# zookeeper: schema: openim #默认即可 zkAddr: [ 127.0.0.1:2181 ] #单机部署时,默认即可 userName: password: mysql: dbMysqlAddress: [ 127.0.0.1:13306 ] #mysql地址 目前仅支持单机,默认即可 dbMysqlUserName: #mysql用户名,建议修改 dbMysqlPassword: # mysql密码,建议修改 dbMysqlDatabaseName: openIM_v2 #默认即可 dbTableName: eMsg #默认即可 dbMsgTableNum: 1 dbMaxOpenConns: 100 dbMaxIdleConns: 10 dbMaxLifeTime: 5 logLevel: 1 #1=slient 2=error 3=warn 4=info slowThreshold: 500 mongo: dbUri: ""#当dbUri值不为空则直接使用该值 #dbAddress: 127.0.0.1:37017 #单机时为mongo地址,使用分片集群时,为mongos地址 默认即可 dbAddress: [ 127.0.0.1:37017 ] #单机时为mongo地址,使用分片集群时,为mongos地址 默认即可 dbDirect: false dbTimeout: 60 dbDatabase: openIM #mongo db 默认即可 dbSource: admin dbUserName: #mongo用户名,建议先不设置 dbPassword: #mongo密码,建议先不设置 dbMaxPoolSize: 100 dbRetainChatRecords: 3650 #mongo保存离线消息时间(天),根据需求修改 chatRecordsClearTime: "* * * * *" # 每天凌晨3点清除消息,该配置和linux定时任务一样, 清理操作建议设置在用户活跃少的时候 # 0 3 * * * redis: dbAddress: [ 127.0.0.1:16379 ] #redis地址 单机时,填写一个地址即可,使用redis集群时候,填写集群中多个节点地址(主从地址都可以填写,增加容灾能力),默认即可 dbMaxIdle: 128 dbMaxActive: 0 dbIdleTimeout: 120 dbUserName: #only redis version 6.0+ need username dbPassWord: #redis密码 建议修改 enableCluster: false #如果外部redis以集群方式启动,需要打开此开关 kafka: SASLUserName: SASLPassword: ws2mschat: addr: [ 127.0.0.1:9092 ] #kafka配置,默认即可 topic: "ws2ms_chat" #用于mongo和mysql保存消息 msgtomongo: addr: [ 127.0.0.1:9092 ] #kafka配置,默认即可 topic: "msg_to_mongo" ms2pschat: addr: [ 127.0.0.1:9092 ] #kafka配置,默认即可 topic: "ms2ps_chat" #消息push msgtomodify: addr: [ 127.0.0.1:9092 ] #kafka配置,默认即可 topic: "msg_to_modify" consumergroupid: msgToTransfer: mongo msgToMongo: mongo_ex msgToMySql: mysql msgToPush: push msgToModify: modify #---------------Internal service configuration---------------------# # The service ip default is empty, # automatically obtain the machine's valid network card ip as the service ip, # otherwise the configuration ip is preferred #如果是单机模式,用0.0.0.0或者不填,默认即可 #作为rpc时,注册到etcd的地址,单机默认即可,如果是集群部署,需要修改(具体使用内网地址还是外网地址,要依情况而定,目的是api/gateway能访问到) rpcRegisterIP: #默认即可 listenIP: 0.0.0.0 # endpoints 内部组件间访问的端点host名称,访问时,可以内部直接访问 host:port 来访问 endpoints: api: openim_api push: openim_push msg_gateway: openim_msg_gateway rpc_auth: openim_rpc_auth rpc_friend: openim_rpc_friend rpc_group: openim_rpc_group rpc_msg: openim_rpc_msg rpc_user: openim_rpc_user api: openImApiPort: [ 10002 ] #api服务端口,默认即可,需要开放此端口或做nginx转发 listenIP: 0.0.0.0 sdk: openImSdkWsPort: [ 10003 ] #jssdk服务端口,默认即可,项目中使用jssdk才需开放此端口或做nginx转发 dataDir: [ ../db/sdk/ ] openImWsAddress: ws://127.0.0.1:10001 openImApiAddress: http://127.0.0.1:10002 #对象存储服务,以下配置二选一,目前支持两种,腾讯云和minio,二者配置好其中一种即可(如果使用minio参考https://doc.rentsoft.cn/#/qa/minio搭建minio服务器) credential: #腾讯cos,发送图片、视频、文件时需要,请自行申请后替换,必须修改 tencent: appID: region: bucket: secretID: secretKey: minio: #MinIO 发送图片、视频、文件时需要,请自行申请后替换,必须修改。 客户端初始化InitSDK,中 object_storage参数为minio bucket: openim # 存储内容桶 appBucket: app # 存储app的桶 location: us-east-1 endpoint: #minio外网ip 这个ip是给客户端访问的 endpointInner: http://127.0.0.1:10005 #minio内网地址 如果im server 可以通过内网访问到 minio就可以 endpointInnerEnable: true #是否启用minio内网地址 启用可以让桶初始化,IM server连接minio走内网地址访问 accessKeyID: secretAccessKey: storageTime: 50 #文件在minio中保存的时间 isDistributedMod: false # 是否分布式多硬盘部署 默认docker-compose中为false ali: # ali oss regionID: accessKeyID: accessKeySecret: stsEndpoint: ossEndpoint: bucket: finalHost: stsDurationSeconds: OssRoleArn: aws: accessKeyID: #AssumeRole用户关联的accessKeyID accessKeySecret: #AssumeRole用户关联的accessKeySecrect region: #分区 bucket: #桶 finalHost: #对外Host roleArn: #RoleArn externalId: #角色扩展Id roleSessionName: #角色SESSION名称 rpcport: #rpc服务端口 默认即可 openImUserPort: [ 10110 ] openImFriendPort: [ 10120 ] openImMessagePort: [ 10130 ] openImMessageGatewayPort: [ 10140 ] openImGroupPort: [ 10150 ] openImAuthPort: [ 10160 ] openImPushPort: [ 10170 ] openImConversationPort: [ 10230 ] openImRtcPort: [ 11300 ] rpcregistername: #rpc注册服务名,默认即可 openImUserName: User openImFriendName: Friend openImMsgName: Msg openImPushName: Push openImMessageGatewayName: MessageGateway openImGroupName: Group openImAuthName: Auth openImConversationName: Conversation openImRtcName: Rtc log: storageLocation: ../logs/ rotationTime: 24 remainRotationCount: 2 #日志数量 #日志级别 6表示全都打印,测试阶段建议设置为6 remainLogLevel: 6 elasticSearchSwitch: false elasticSearchAddr: [ 127.0.0.1:9201 ] elasticSearchUser: "" elasticSearchPassword: "" modulename: #日志文件按模块命名,默认即可 longConnSvrName: msg_gateway msgTransferName: msg_transfer pushName: push longconnsvr: openImWsPort: [ 10001 ] # ws服务端口,默认即可,要开放此端口或做nginx转发 websocketMaxConnNum: 10000 websocketMaxMsgLen: 4096 websocketTimeOut: 10 ## 推送只能开启一个 enable代表开启 push: tpns: #腾讯推送,暂未测试 暂不要使用 ios: accessID: 1600018281 secretKey: 3cd68a77a95b89e5089a1aca523f318f android: accessID: 111 secretKey: 111 enable: false # true or false (bool) jpns: #极光推送 在极光后台申请后,修改以下四项,必须修改 appKey: masterSecret: pushUrl: pushIntent: enable: false # true or false (bool) getui: #个推推送 pushUrl: masterSecret: "" appKey: "" intent: "" enable: # true or false (bool) channelID: "" channelName: "" fcm: #firebase cloud message 消息推送 serviceAccount: "openim-5c6c0-firebase-adminsdk-ppwol-8765884a78.json" #帐号文件,此处需要改修配置,并且这个文件放在 config目录下 enable: false manager: #app管理员userID和对应的secret 建议修改。 用于管理后台登录,也可以用户管理后台对应的api appManagerUid: [ "openIM123456","openIM654321", "openIM333", "openIMAdmin"] secrets: [ "openIM1","openIM2", "openIM333", "openIMAdmin"] appSysNotificationName: "系统通知" secret: # 多端互踢策略 # 1:多平台登录:Android、iOS、Windows、Mac 每种平台只能一个在线,web端可以多个同时在线 multiloginpolicy: 1 #msg log insert to db chatpersistencemysql: true #消息缓存时间 msgCacheTimeout: 86400 #群聊已读开启 groupMessageHasReadReceiptEnable: true #单聊已读开启 singleMessageHasReadReceiptEnable: true #token config tokenpolicy: accessSecret: #token生成相关,默认即可 # Token effective time day as a unit accessExpire: #token过期时间(天) 默认即可 messageverify: friendVerify: #ios系统推送声音以及标记计数 iospush: pushSound: "xxx" badgeCount: true production: false callback: # callback url 需要自行更换callback url callbackUrl : "http://127.0.0.1:8080/callback" # 开启关闭操作前后回调的配置 callbackBeforeSendSingleMsg: enable: false # 回调是否启用 callbackTimeOut: 2 # 回调超时时间 callbackFailedContinue: true # 回调超时是否继续执行代码 callbackAfterSendSingleMsg: enable: false callbackTimeOut: 2 callbackBeforeSendGroupMsg: enable: false callbackTimeOut: 2 callbackFailedContinue: true callbackAfterSendGroupMsg: enable: false callbackTimeOut: 2 callbackMsgModify: enable: false callbackTimeOut: 2 callbackFailedContinue: true callbackUserOnline: enable: false callbackTimeOut: 2 callbackUserOffline: enable: false callbackTimeOut: 2 callbackUserKickOff: enable: false callbackTimeOut: 2 callbackOfflinePush: enable: false callbackTimeOut: 2 callbackFailedContinue: true # 回调超时是否继续离线推送 callbackOnlinePush: enable: false callbackTimeOut: 2 callbackFailedContinue: true # 回调超时是否继续离线推送 callbackSuperGroupOnlinePush: enable: false callbackTimeOut: 2 callbackFailedContinue: true # 回调超时是否继续离线推送 callbackBeforeAddFriend: enable: false callbackTimeOut: 2 callbackFailedContinue: true # 回调超时是否继续 callbackBeforeCreateGroup: enable: false callbackTimeOut: 2 callbackFailedContinue: true # 回调超时是否继续 callbackBeforeMemberJoinGroup: enable: false callbackTimeOut: 2 callbackFailedContinue: true # 回调超时是否继续 callbackBeforeSetGroupMemberInfo: enable: false callbackTimeOut: 2 callbackFailedContinue: true # 回调超时是否继续 callbackSetMessageReactionExtensions: enable: false callbackTimeOut: 2 callbackFailedContinue: true # 回调超时是否继续 rtc: signalTimeout: 35 # prometheus每个服务监听的端口数量需要和rpc port保持一致 prometheus: enable: false userPrometheusPort: [ 20110 ] friendPrometheusPort: [ 20120 ] messagePrometheusPort: [ 20130 ] messageGatewayPrometheusPort: [ 20140 ] groupPrometheusPort: [ 20150 ] authPrometheusPort: [ 20160 ] pushPrometheusPort: [ 20170 ] conversationPrometheusPort: [ 20230 ] RtcPrometheusPort: [ 21300 ] messageTransferPrometheusPort: [ 21400, 21401, 21402, 21403 ] # 端口数量和 script/path_info.cfg msg_transfer_service_num保持一致