# =============================== #=bytedesk # =============================== bytedesk.debug=true bytedesk.version=0.8.8 # 授权 key bytedesk.appkey=ZjoyMDI1LTA4LTA2OkVOVEVSUFJJU0U6Ojo6 # enable custom config: name, logo, description bytedesk.custom.enabled=false # default null use default name bytedesk.custom.name= # default null use default logo bytedesk.custom.logo= # default null use: Chat As A Service bytedesk.custom.description= # show right corner chat bytedesk.custom.show-right-corner-chat=true # show demo bytedesk.custom.show-demo=false # privacy policy url bytedesk.custom.privacy-policy-url=https://www.weiyuai.cn/privacy.html # terms of service url bytedesk.custom.terms-of-service-url=https://www.weiyuai.cn/terms.html # enable login username bytedesk.custom.login-username-enable=true # enable login mobile bytedesk.custom.login-mobile-enable=true # enable login email # bytedesk.custom.login-email-enable=false # enable login scan bytedesk.custom.login-scan-enable=true # show doc url bytedesk.custom.doc-url-show=true # doc url bytedesk.custom.doc-url=https://www.weiyuai.cn/docs/zh-CN/ # lang: zh-CN/en-US/zh-TW bytedesk.custom.lang=zh-CN # =============================== # Admin config # =============================== # admin email bytedesk.admin.email=admin@email.com # admin password bytedesk.admin.password=admin # admin nickname bytedesk.admin.nickname=SuperAdmin # admin mobile bytedesk.admin.mobile=13345678000 # white list mobile bytedesk.admin.mobile-whitelist=18888888000,18888888001,18888888002,18888888003,18888888004,18888888005 # white list email bytedesk.admin.email-whitelist=100@email.com,101@email.com,102@email.com,103@email.com,104@email.com,105@email.com # validate code for white list mobile and email, otherwise random 6 digits bytedesk.admin.validate-code=123456 # allow register bytedesk.admin.allow-register=true # force validate mobile bytedesk.admin.force-validate-mobile=true # force validate email bytedesk.admin.force-validate-email=true # =============================== #= Member config # =============================== # create/import member default password bytedesk.member.password=123456 # =============================== # Organization config # =============================== # organization name bytedesk.organization.name=MyCompany # organization code bytedesk.organization.code=bytedesk # =============================== # Features config # =============================== # enable java ai bytedesk.features.java-ai=true # send email by javamail, valid value: javamail/aliyun bytedesk.features.email-type=javamail # 头像的访问地址,请修改为服务器实际的地址 bytedesk.features.avatar-base-url=http://127.0.0.1:9003 # =============================== # CORS config # =============================== bytedesk.cors.allowed-origins=* # =============================== # JWT config # =============================== bytedesk.jwt.secret-key=1dfaf8d004207b628a9a6b859c429f49a9a7ead9fd8161c1e60847aeef06dbd2 # 30 days, milliseconds bytedesk.jwt.expiration=2592000000 # 60 days, milliseconds bytedesk.jwt.refresh-token-expiration=5184000000 # =============================== # Cache config # =============================== # 0: no cache, 1: caffeine cache, 2: caffeine + redis cache bytedesk.cache.level=0 # cache prefix bytedesk.cache.prefix=bytedeskim # redis stream key bytedesk.cache.redis-stream-key=bytedeskim:stream # bytedesk.redis-pubsub-channel=bytedeskim:pubsub # =============================== # redis pool config # =============================== bytedesk.redis.pool-config.maxIdle=64 bytedesk.redis.pool-config.maxTotal=64 bytedesk.redis.pool-config.minIdle=8 # =============================== #=spring-boot-starter-cache # https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#appendix.application-properties.cache # =============================== # disable caching: none, https://docs.spring.io/spring-boot/docs/3.2.0/reference/htmlsingle/#io.caching.provider.none # https://docs.spring.io/spring-boot/reference/io/caching.html # https://docs.spring.io/spring-framework/reference/integration/cache/annotations.html#cache-spel-context spring.cache.type=none # spring.cache.type=redis # spring.cache.type=caffeine # spring.cache.caffeine.spec=maximumSize=100,expireAfterAccess=5m # spring.cache.redis.cache-null-values=false spring.cache.redis.use-key-prefix=true spring.cache.redis.key-prefix=bytedeskim: # # =============================== #=spring-boot-starter-data-redis # https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#appendix.application-properties.data # REDIS_URL="redis://:qfRxz3tVT8Nh@127.0.0.1:6379/0" # =============================== spring.data.redis.database=0 spring.data.redis.host=127.0.0.1 # 默认6379端口,为防止与本地冲突,docker中为16379 spring.data.redis.port=16379 spring.data.redis.password=qfRxz3tVT8Nh spring.data.redis.timeout=10000 # disable redis repository spring.data.redis.repositories.enabled=false # =============================== # Upload config # =============================== # Upload config, no '/' bytedesk.upload.type=local # upload dir bytedesk.upload.dir=uploads # 上传文件的访问地址,请修改为服务器实际的地址 bytedesk.upload.url=http://127.0.0.1:9003 # =============================== # Knowledge base config # =============================== # theme: default/eduport/social/kbdoc bytedesk.kbase.theme=default # html path bytedesk.kbase.html-path=helpcenter # bytedesk.kbase.template-path=classpath:/templates/ftl/kbase # 知识库的访问地址,请修改为服务器实际的地址 bytedesk.kbase.api-url=http://127.0.0.1:9003 # =============================== #=com.bytedesk.socket module # =============================== # enable socket bytedesk.socket.enabled=true # socket host bytedesk.socket.host=0.0.0.0 # socket port # bytedesk.socket.port=9883 # websocket port bytedesk.socket.websocket-port=9885 # leak detector level bytedesk.socket.leak-detector-level=SIMPLE # parent event loop group thread count bytedesk.socket.parent-event-loop-group-thread-count=1 # child event loop group thread count bytedesk.socket.child-event-loop-group-thread-count=8 # max payload size bytedesk.socket.max-payload-size=10240 # =============================== #=com.bytedesk.cluster module # =============================== # enable cluster bytedesk.cluster.enabled=false # cluster nodes bytedesk.cluster.nodes=127.0.0.1,127.0.0.2 # bytedesk.cluster.host=230.0.0.0 # bytedesk.cluster.port=6781 # bytedesk.cluster.client-port=6771 # =============================== #= push # =============================== # apns bundle id bytedesk.push.apns.bundle-id=com.kefux.im # apns p12 url bytedesk.push.apns.p12-url=123.p12 # apns p12 password bytedesk.push.apns.p12-password=123456 # =============================== # LDAP Configuration # =============================== # 是否启用LDAP spring.ldap.enabled=false # LDAP 服务器地址 spring.ldap.urls=ldap://127.0.0.1:389 # LDAP 基础目录 spring.ldap.base=dc=example,dc=com # LDAP 管理员用户名(完整DN) spring.ldap.username=cn=admin,dc=example,dc=com # LDAP 管理员密码 spring.ldap.password=admin # LDAP 是否只读 spring.ldap.anonymous-read-only=false # LDAP 是否启用匿名访问 spring.ldap.anonymous-enabled=false # =============================== # SSO Configuration # =============================== # 是否启用SSO spring.security.oauth2.client.enabled=false # GitHub OAuth2 配置 spring.security.oauth2.client.registration.github.provider=github spring.security.oauth2.client.registration.github.client-id=your-github-client-id spring.security.oauth2.client.registration.github.client-secret=your-github-client-secret spring.security.oauth2.client.registration.github.scope=user:email,read:user spring.security.oauth2.client.registration.github.redirect-uri={baseUrl}/login/oauth2/code/github # Google OAuth2 配置 spring.security.oauth2.client.registration.google.provider=google spring.security.oauth2.client.registration.google.client-id=your-google-client-id spring.security.oauth2.client.registration.google.client-secret=your-google-client-secret spring.security.oauth2.client.registration.google.scope=email,profile spring.security.oauth2.client.registration.google.redirect-uri={baseUrl}/login/oauth2/code/google # 企业微信 OAuth2 配置 spring.security.oauth2.client.registration.wecom.provider=wecom spring.security.oauth2.client.registration.wecom.client-id=your-wecom-client-id spring.security.oauth2.client.registration.wecom.client-secret=your-wecom-client-secret spring.security.oauth2.client.registration.wecom.redirect-uri={baseUrl}/login/oauth2/code/wecom spring.security.oauth2.client.registration.wecom.authorization-grant-type=authorization_code spring.security.oauth2.client.registration.wecom.scope=snsapi_base # 企业微信 Provider 配置 spring.security.oauth2.client.provider.wecom.authorization-uri=https://open.weixin.qq.com/connect/oauth2/authorize spring.security.oauth2.client.provider.wecom.token-uri=https://qyapi.weixin.qq.com/cgi-bin/gettoken spring.security.oauth2.client.provider.wecom.user-info-uri=https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo spring.security.oauth2.client.provider.wecom.user-name-attribute=userid # =============================== # = oauth # github:https://github.com/settings/applications/new # =============================== bytedesk.oauth.github.clientid=clientid bytedesk.oauth.github.clientsecret=clientid # =============================== #=logging # https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#appendix.application-properties.core # 五种level:TRACE、DEBUG、INFO、WARN和ERROR # =============================== # 会打印sqlLog # debug=true # trace=true # 隐藏其他常见的DEBUG日志 # logging.level.org.springframework=INFO # logging.level.org.hibernate=INFO # logging.level.org.apache=INFO # 设置自定义包的日志级别 # logging.level.com.bytedesk=INFO logging.level.web=DEBUG logging.level.org.springframework.security.web.FilterChainProxy=WARN logging.level.org.springframework.web.socket=INFO # 设置 FreeMarker 的日志级别为 INFO logging.level.org.springframework.web.servlet.view.freemarker=WARN logging.level.org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport=WARN # logging.level.org.hibernate.orm.connections.pooling=WARN # 关闭StringDecoder相关的日志 logging.level.org.springframework.core.codec.StringDecoder=WARN # 关闭reactor-http相关日志 logging.level.reactor.netty.http=WARN logging.level.org.springframework.web.client.DefaultRestClient=WARN # 完全禁用某些包的日志 # logging.level.org.springframework.web.servlet.view.freemarker=OFF # logging.level.org.springframework.messaging=WARN # logging.level.org.springframework.web=INFO # logging.level.org.springframework.security=INFO # logging.level.root=DEBUG logging.level.com.bytedesk.ai=DEBUG logging.level.com.bytedesk.core=DEBUG logging.level.com.bytedesk.kbase=DEBUG logging.level.com.bytedesk.service=DEBUG logging.level.com.bytedesk.social=DEBUG logging.level.com.bytedesk.wechat=DEBUG logging.level.com.bytedesk.shop=DEBUG logging.level.com.bytedesk.team=DEBUG logging.level.com.bytedesk.ticket=DEBUG logging.level.com.bytedesk.starter=DEBUG # logging.level.org.springframework.web.client.DefaultRestClient=WARN logging.file.name=logs/bytedeskim.log logging.file.max-size=10MB logging.file.max-history=5 # 2024-09-19T13:07:39.031+08:00 INFO 4043 --- [bytedesk] [ main] liquibase.util : UPDATE SUMMARY # logging.pattern.console=[TRACEID:%X{traceId}] %clr(%5p) %d{HH:mm:ss.SSS} %class{-1}: %msg%xEx%n logging.pattern.console=[TRACEID:%X{traceId}] %clr(%d{${LOG_DATEFORMAT_PATTERN:yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx} logging.pattern.file=[TRACEID:%X{traceId}]-%clr(%d{${LOG_DATEFORMAT_PATTERN:yyyy-MM-dd HH:mm:ss.SSS}}){faint}-%clr(${LOG_LEVEL_PATTERN:%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx} # =============================== #= alibaba druid # http://127.0.0.1:9003/druid # https://github.com/alibaba/druid/wiki/DruidDataSource%E9%85%8D%E7%BD%AE%E5%B1%9E%E6%80%A7%E5%88%97%E8%A1%A8 # =============================== spring.datasource.type=com.alibaba.druid.pool.DruidDataSource # druid properties spring.datasource.druid.initial-size=10 spring.datasource.druid.min-idle=10 spring.datasource.druid.max-active=100 spring.datasource.druid.max-wait=60000 spring.datasource.druid.time-between-eviction-runs-millis=60000 spring.datasource.druid.min-evictable-idle-time-millis=300000 spring.datasource.druid.validation-query=SELECT 'x' spring.datasource.druid.test-while-idle=true spring.datasource.druid.test-on-borrow=false spring.datasource.druid.test-on-return=false spring.datasource.druid.stat-view-servlet.enabled=true spring.datasource.druid.stat-view-servlet.url-pattern=/druid/* spring.datasource.druid.stat-view-servlet.login-username=admin@email.com spring.datasource.druid.stat-view-servlet.login-password=admin # spring.datasource.druid.stat-view-servlet.reset-enable=false # spring.datasource.druid.stat-view-servlet.allow=127.0.0.1 # spring.datasource.druid.stat-view-servlet.deny= spring.datasource.druid.filters=config,stat spring.datasource.druid.filter.stat.log-slow-sql=true spring.datasource.druid.filter.stat.slow-sql-millis=1 # spring.datasource.druid.web-stat-filter.enabled=true # spring.datasource.druid.web-stat-filter.url-pattern=/* # spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/* # =============================== #= h2 # https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#appendix.application-properties.data # =============================== # http://127.0.0.1:9003/h2-console # spring.h2.console.enabled=true # spring.h2.console.path=/h2-console # spring.h2.console.settings.trace=false # spring.h2.console.settings.web-allow-others=false # # # # spring.datasource.url=jdbc:h2:mem:testdb # spring.datasource.url=jdbc:h2:file:./h2db/weiyuim # spring.datasource.driverClassName=org.h2.Driver # spring.datasource.username=sa # spring.datasource.password=sa # spring.jpa.database-platform=org.hibernate.dialect.H2Dialect # spring.jpa.defer-datasource-initialization=true # =============================== #= mysql # https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#appendix.application-properties.data # =============================== # 默认使用:3306端口,为防止本地冲突,docker中为:13306 spring.datasource.url=jdbc:mysql://127.0.0.1:13306/bytedesk?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true # spring.datasource.url=jdbc:mysql://127.0.0.1:3306/bytedesk?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true spring.datasource.username=root spring.datasource.password=r8FqfdbWUaN3 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.jpa.database=mysql spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate # =============================== #= postgresql # https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#appendix.application-properties.data # 因本地占用,将5432改为5433 # DATABASE_URL="postgresql://postgres:r8FqfdbWUaN3@localhost:5433/bytedesk" # =============================== # spring.datasource.url=jdbc:postgresql://127.0.0.1:5433/bytedesk # spring.datasource.username=postgres # spring.datasource.password=r8FqfdbWUaN3 # spring.datasource.driver-class-name=org.postgresql.Driver # spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect # spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate # =============================== #=spring-boot-starter-data-jpa # https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#appendix.application-properties.data # =============================== # 生产环境关闭update模式,使用validate # update/none/validate/create/create-drop spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=false spring.jpa.properties.hibernate.format_sql=false spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true spring.jpa.open-in-view=false # 设置 Hibernate 时区为 Asia/Shanghai spring.jpa.properties.hibernate.jdbc.time_zone=Asia/Shanghai # https://www.cnblogs.com/suizhikuo/p/16997225.html # spring.jackson.date-format=yyyy-MM-dd HH:mm:ss spring.jackson.date-format=yyyy-MM-dd'T'HH:mm:ss.SSSX spring.jackson.time-zone=GMT+8 # =============================== #=spring-boot-starter-data-rest # http://127.0.0.1:9003/rest/api/profile # https://docs.spring.io/spring-data/rest/reference/index.html # https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#application-properties.data.spring.data.rest.base-path # =============================== spring.data.rest.base-path=/api # spring.data.rest.default-page-size=20 # spring.data.rest.max-page-size= # spring.data.rest.page-param-name=page # spring.data.rest.limit-param-name=size # spring.data.rest.sort-param-name=sort spring.data.rest.return-body-on-create=true spring.data.rest.return-body-on-update=true # spring.data.rest.sort-param-name= # =============================== #=spring-boot-starter-actuator # https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#appendix.application-properties.actuator # https://docs.spring.io/spring-boot/docs/current/actuator-api/htmlsingle/#prometheus # https://docs.micrometer.io/micrometer/reference/implementations/prometheus.html # http://127.0.0.1:9003/actuator # 健康检查:http://127.0.0.1:9003/actuator/health # 所有指标:http://127.0.0.1:9003/actuator/metrics # 特定指标:http://127.0.0.1:9003/actuator/metrics/{metric.name} # Prometheus 格式:http://127.0.0.1:9003/actuator/prometheus # http://127.0.0.1:9003/actuator/prometheus # Prometheus 指标接口 # Prometheus UI # http://127.0.0.1:19090 # Prometheus 管理界面 # Grafana # http://127.0.0.1:13000 # Grafana 管理界面 # - 用户名:admin # - 密码:admin # =============================== # 关闭所有actuator端点 # management.endpoints.enabled-by-default=false management.endpoints.web.base-path=/actuator management.endpoints.web.exposure.include=health,metrics,prometheus management.endpoint.health.show-details=always management.endpoint.metrics.enabled=true management.endpoint.prometheus.enabled=true # Metrics configuration management.metrics.tags.application=bytedesk management.metrics.distribution.percentiles-histogram.http.server.requests=true management.metrics.distribution.sla.http.server.requests=100ms,400ms,500ms # Prometheus configuration management.prometheus.metrics.export.enabled=true # =============================== # = Zipkin Tracing Configuration # =============================== # 关闭 Zipkin 追踪 management.tracing.enabled=false management.zipkin.tracing.enabled=false # management.zipkin.tracing.endpoint=http://127.0.0.1:9411/api/v2/spans # 或者设置采样概率为0来禁用追踪 management.tracing.sampling.probability=0.0 # Prometheus Admin Credentials # spring.docker.compose.service.bytedesk-prometheus.environment.PROMETHEUS_ADMIN_USER=admin # spring.docker.compose.service.bytedesk-prometheus.environment.PROMETHEUS_ADMIN_PASSWORD=admin # Grafana Admin Credentials # spring.docker.compose.service.bytedesk-grafana.environment.GF_SECURITY_ADMIN_USER=admin # spring.docker.compose.service.bytedesk-grafana.environment.GF_SECURITY_ADMIN_PASSWORD=admin # spring.docker.compose.service.bytedesk-grafana.environment.GF_AUTH_ANONYMOUS_ENABLED=false # # =============================== #=spring-boot-starter-admin-client # https://github.com/codecentric/spring-boot-admin?tab=readme-ov-file # https://docs.spring-boot-admin.com/current/getting-started.html # =============================== spring.boot.admin.client.url=http://127.0.0.1:9003 # spring.boot.admin.ui.public-url=http://127.0.0.1:9003/actuator/admin # =============================== #=springdoc # https://springdoc.org/#properties # http://127.0.0.1:9003/swagger-ui/index.html # http://127.0.0.1:9003/v3/api-docs # =============================== springdoc.show-actuator=false # swagger-ui # http://127.0.0.1:9003/swagger-ui/index.html springdoc.swagger-ui.enabled=true springdoc.swagger-ui.path=/index.html # api-docs springdoc.api-docs.enabled=true springdoc.api-docs.path=/v3/api-docs # knife4j # http://127.0.0.1:9003/doc.html knife4j.enabled=true knife4j.setting.language=zh_cn # =============================== #=spring-boot-devtools # https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#appendix.application-properties.devtools # =============================== spring.devtools.restart.poll-interval=2s spring.devtools.restart.quiet-period=1s # # =============================== # = Apache ActiveMQ Artemis logger levels # =============================== # https://activemq.apache.org/components/artemis/documentation/latest/logging.html # https://codeaches.com/spring-boot/embedded-activemq-artemis-jms-broker logging.level.org.apache.activemq.artemis.core.server=WARN logging.level.org.apache.activemq.artemis.utils=WARN logging.level.org.apache.activemq.artemis.jms=WARN logging.level.org.apache.activemq.audit.base=WARN logging.level.org.apache.activemq.audit.message=WARN # =============================== # = spring-boot-starter-artemis # = jms artemis # https://spring.io/guides/gs/messaging-jms # https://docs.spring.io/spring-boot/reference/messaging/jms.html # https://activemq.apache.org/components/artemis/documentation/latest/index.html # spring.jms.pub-sub-domain=true # =============================== spring.artemis.mode=embedded # spring.artemis.mode=native # spring.artemis.broker-url=tcp://127.0.0.1:61617 # spring.artemis.user=admin # spring.artemis.password=admin # =============================== # spring mail # https://springdoc.cn/spring-boot/application-properties.html#appendix.application-properties.mail # =============================== spring.mail.host=smtp.qq.com spring.mail.port=465 # spring.mail.username= # spring.mail.password= spring.mail.data-encoding=UTF-8 spring.mail.protocol=smtps spring.mail.properties.mail.smtp.connectiontimeout=5000 spring.mail.properties.mail.smtp.timeout=3000 spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true spring.mail.properties.mail.smtp.starttls.required=true # # =============================== # = Quartz # https://github.com/quartz-scheduler/quartz # https://docs.spring.io/spring-boot/reference/io/quartz.html # https://medium.com/@ChamithKodikara/spring-boot-2-quartz-2-scheduler-integration-a8eaaf850805 # SpringBoot官方说明:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-quartz.html # Quartz官方文档:https://www.quartz-scheduler.org/documentation/2.3.1-SNAPSHOT/tutorials/index.html # =============================== spring.quartz.job-store-type=jdbc # # 3种模式: ALWAYS、EMBEDDED、NEVER # 首次启动时创建表,但每次都会清空数据,初始化之后,需要修改为never spring.quartz.jdbc.initialize-schema=always # spring.quartz.jdbc.initialize-schema=never spring.quartz.wait-for-jobs-to-complete-on-shutdown=true # spring.quartz.properties.org.quartz.scheduler.instanceName=BytedeskScheduler spring.quartz.properties.org.quartz.scheduler.instanceId=AUTO #spring.quartz.properties.org.quartz.scheduler.instanceIdGenerator.class=io.xiaper.schedule.util.CustomQuartzInstanceIdGenerator # spring.quartz.properties.org.quartz.jobStore.isClustered=true spring.quartz.properties.org.quartz.jobStore.tablePrefix=QRTZ_ # spring.quartz.properties.org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX spring.quartz.properties.org.quartz.jobStore.class=org.springframework.scheduling.quartz.LocalDataSourceJobStore spring.quartz.properties.org.quartz.jobStore.clusterCheckinInterval=10000 spring.quartz.properties.org.quartz.jobStore.useProperties=false # spring.quartz.properties.org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool spring.quartz.properties.org.quartz.threadPool.threadCount=5 spring.quartz.properties.org.quartz.threadPool.threadPriority=5 spring.quartz.properties.org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread=true # # =============================== # = multipart file uploads # =============================== spring.servlet.multipart.enabled=true # Write files to disk if the file size is more than 2KB. spring.servlet.multipart.file-size-threshold=2KB # The intermediate disk location where the uploaded files are written # jetty里面开启这个配置会报错 # spring.servlet.multipart.location=/tmp # Maximum file size that can be uploaded spring.servlet.multipart.max-file-size=100MB # Maximum allowed multipart request size spring.servlet.multipart.max-request-size=100MB # =============================== # = spring-session-data-redis # https://docs.spring.io/spring-session/reference/guides/boot-redis.html # =============================== # server.servlet.session.cookie.name=MY_SESSION_COOKIE # server.servlet.session.cookie.max-age=3600 # server.servlet.session.cookie.domain # server.servlet.session.cookie.path # not working? # spring.session.redis.namespace=bytedeskim # # =============================== # = ai # =============================== # spring.mvc.async.request-timeout=10000 logging.level.org.springframework.ai.chat.client.advisor=DEBUG # 启用Spring AI的观察功能 spring.ai.observation.enabled=true spring.ai.retry.observation.enabled=true # 对话配置 # spring.ai.model.chat=none # spring.ai.model.chat=ollama spring.ai.model.chat=zhipuai # 向量模型 # spring.ai.model.embedding=none # spring.ai.model.embedding=ollama spring.ai.model.embedding=zhipuai # 视觉模型 # spring.ai.model.vision=none # spring.ai.model.vision=ollama spring.ai.model.vision=zhipuai # 语音模型 # spring.ai.model.audio=none # spring.ai.model.audio=ollama spring.ai.model.audio=zhipuai # 重排序模型 # spring.ai.model.rerank=none # spring.ai.model.rerank=ollama spring.ai.model.rerank=zhipuai # ollama: # https://docs.spring.io/spring-ai/reference/api/chat/ollama-chat.html # spring.ai.ollama.init.pull-model-strategy=always # 默认:11434,为防止本地冲突,如果是docker,需要修改为21434 # spring.ai.ollama.base-url=http://127.0.0.1:11434 spring.ai.ollama.base-url=http://127.0.0.1:21434 spring.ai.ollama.chat.enabled=true # spring.ai.ollama.chat.options.model=deepseek-r1:latest spring.ai.ollama.chat.options.model=qwen3:0.6b spring.ai.ollama.chat.options.temperature=0.7 # spring.ai.ollama.chat.options.numa=false # https://docs.spring.io/spring-ai/reference/api/embeddings/ollama-embeddings.html spring.ai.ollama.embedding.enabled=true # https://github.com/ollama/ollama?tab=readme-ov-file#model-library spring.ai.ollama.embedding.options.model=bge-m3:latest # spring.ai.ollama.embedding.options.numa=false # spring.ai.ollama.init.timeout=60s # spring.ai.ollama.init.max-retries=2 # https://huggingface.co/BAAI/bge-reranker-v2-m3 spring.ai.ollama.embedding.options.model.rerank=linux6200/bge-reranker-v2-m3:latest # zhipuai # https://open.bigmodel.cn/overview # https://docs.spring.io/spring-ai/reference/api/embeddings/zhipuai-embeddings.html # https://docs.spring.io/spring-ai/reference/api/chat/zhipuai-chat.html # spring.ai.zhipuai.base-url=https://open.bigmodel.cn/api/paas # 申请智谱AI API Key:https://www.bigmodel.cn/usercenter/proj-mgmt/apikeys # spring.ai.zhipuai.chat.base-url=URL_ADDRESS spring.ai.zhipuai.api-key='sk-xxx' spring.ai.zhipuai.chat.enabled=false # 免费模型:https://open.bigmodel.cn/dev/api#glm-4 spring.ai.zhipuai.chat.options.model=glm-4-flash spring.ai.zhipuai.chat.options.temperature=0.7 # https://docs.spring.io/spring-ai/reference/api/embeddings/zhipuai-embeddings.html spring.ai.zhipuai.embedding.enabled=false # spring.ai.zhipuai.embedding.base-url=https://api.bigmodel.cn # spring.ai.zhipuai.embedding.api-key=sk-xxx # 1024维度的模型 spring.ai.zhipuai.embedding.options.model=embedding-2 # 2048维度的模型 # spring.ai.zhipuai.embedding.options.model=embedding-3 # # spring ai alibaba # https://java2ai.com/docs/dev/get-started/ # 阿里云百炼大模型获取api key: # https://bailian.console.aliyun.com/?apiKey=1#/api-key # 阿里云百炼大模型模型列表: # https://bailian.console.aliyun.com/?spm=a2c4g.11186623.0.0.11c67980m5X2VR#/model-market spring.ai.dashscope.enabled=true spring.ai.dashscope.base-url=https://dashscope.aliyuncs.com/compatible-mode spring.ai.dashscope.api-key=sk-xxx spring.ai.dashscope.chat.enabled=true spring.ai.dashscope.chat.options.model=qwen-max spring.ai.dashscope.chat.options.temperature=0.7 spring.ai.dashscope.chat.options.topP=3 spring.ai.dashscope.audio.transcription.enabled=false spring.ai.dashscope.image.enabled=false spring.ai.dashscope.embedding.enabled=false spring.ai.dashscope.audio.synthesis.enabled=false spring.ai.nacos.prompt.template.enabled=false # deepseek # https://deepseek.com/ # https://docs.spring.io/spring-ai/reference/api/chat/deepseek-chat.html spring.ai.deepseek.base-url=https://api.deepseek.com spring.ai.deepseek.api-key=sk-xxx spring.ai.deepseek.chat.enabled=false spring.ai.deepseek.chat.options.model=deepseek-chat spring.ai.deepseek.chat.options.temperature=0.7 #Qwen2.5 Qwen/QwQ-32B deepseek-ai/DeepSeek-R1 # siliconflow # https://siliconflow.com/ # https://cloud.siliconflow.cn/i/ZFkQ4atv # https://docs.spring.io/spring-ai/reference/api/chat/siliconflow-chat.html spring.ai.siliconflow.base-url=https://api.siliconflow.cn spring.ai.siliconflow.api-key=sk-xxxx spring.ai.siliconflow.chat.enabled=false spring.ai.siliconflow.chat.options.model=Qwen/QwQ-32B spring.ai.siliconflow.chat.options.temperature=0.7 # gitee # https://ai.gitee.com/ # https://ai.gitee.com/docs/best-practice/integration spring.ai.gitee.base-url=https://ai.gitee.com spring.ai.gitee.api-key=xxx spring.ai.gitee.chat.enabled=false spring.ai.gitee.chat.options.model=Qwen/QwQ-32B spring.ai.gitee.chat.options.temperature=0.7 # tencent # https://console.cloud.tencent.com/hunyuan/start# # https://cloud.tencent.com/document/product/1729/111007 spring.ai.tencent.base-url=https://api.hunyuan.cloud.tencent.com spring.ai.tencent.api-key=sk-xxx spring.ai.tencent.chat.enabled=false spring.ai.tencent.chat.options.model=hunyuan-t1-latest spring.ai.tencent.chat.options.temperature=0.7 # baidu # https://console.bce.baidu.com/iam/#/iam/apikey/list # https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Fm2vrveyu spring.ai.baidu.base-url=https://qianfan.baidubce.com/v2 # ai 开放能力key(报错401) # spring.ai.baidu.api-key=bce-v3/xxx # model builder(可用) spring.ai.baidu.api-key=bce-v3/xxx spring.ai.baidu.chat.enabled=false spring.ai.baidu.chat.options.model=ernie-x1-32k-preview spring.ai.baidu.chat.options.temperature=0.7 # volcengine 火山引擎 # api key: https://console.volcengine.com/ark/region:ark+cn-beijing/apiKey?apikey=%7B%7D # https://www.volcengine.com/docs/82379/1330626 spring.ai.volcengine.base-url=https://ark.cn-beijing.volces.com/api/v3 spring.ai.volcengine.api-key=xxx spring.ai.volcengine.chat.enabled=false spring.ai.volcengine.chat.options.model=doubao-1-5-pro-32k-250115 spring.ai.volcengine.chat.options.temperature=0.7 # openai # https://mp.weixin.qq.com/s/QU4rE1eysKMbQOKI8-9TFg # https://api-docs.deepseek.com/zh-cn/ spring.ai.openai.base-url=https://api.openai.com spring.ai.openai.api-key=sk-xxx spring.ai.openai.chat.enabled=false spring.ai.openai.chat.options.model=gpt-4o # spring.ai.openai.chat.options.model=gpt-4o-mini spring.ai.openai.chat.options.temperature=0.7 # The DeepSeek API doesn't support embeddings, so we need to disable it. spring.ai.openai.embedding.enabled=false spring.ai.openai.image.enabled=false spring.ai.openai.audio.transcription.enabled=false spring.ai.openai.audio.speech.enabled=false spring.ai.openai.moderation.enabled=false # spring.ai.openai.api-key=sk-xxx # spring.ai.openai.endpoint=https://api.openai.com # openrouter spring.ai.openrouter.base-url=https://openrouter.ai spring.ai.openrouter.api-key= spring.ai.openrouter.chat.enabled=false spring.ai.openrouter.chat.options.model= spring.ai.openrouter.chat.options.temperature=0.7 # azure openai spring.ai.azure.openai.chat.enabled=false spring.ai.azure.openai.api-key=YOUR_API_KEY spring.ai.azure.openai.endpoint=YOUR_ENDPOINT # spring.ai.azure.openai.chat.options.deployment-name=gpt-4o # spring.ai.azure.openai.chat.options.temperature=0.7 spring.ai.azure.openai.embedding.enabled=false spring.ai.azure.openai.image.enabled=false # transformers spring.ai.embedding.transformer.enabled=false # spring.ai.embedding.transformer.onnx.modelUri=https://huggingface.co/intfloat/e5-small-v2/resolve/main/model.onnx # spring.ai.embedding.transformer.tokenizer.uri=https://huggingface.co/intfloat/e5-small-v2/raw/main/tokenizer.json # mistralai spring.ai.mistralai.chat.enabled=false spring.ai.mistralai.embedding.enabled=false # qianfan spring.ai.qianfan.chat.enabled=false spring.ai.qianfan.embedding.enabled=false # bedrock spring.ai.bedrock.converse.chat.enabled=false spring.ai.bedrock.cohere.chat.enabled=false spring.ai.bedrock.cohere.embedding.enabled=false # moonshot # https://docs.spring.io/spring-ai/reference/api/chat/moonshot-chat.html spring.ai.moonshot.chat.enabled=false # spring.ai.moonshot.base-url=api.moonshot.cn spring.ai.moonshot.api-key=sk-xxx # spring.ai.moonshot.api-key=sk-placeholder # 或 export SPRING_AI_MOONSHOT_API_KEY= # spring.ai.moonshot.chat.base-url= # spring.ai.moonshot.chat.api-key= # 三种model: moonshot-v1-128k、moonshot-v1-32k、moonshot-v1-8k spring.ai.moonshot.chat.options.model=moonshot-v1-8k spring.ai.moonshot.chat.options.temperature=0.7 # minimax # https://platform.minimaxi.com/user-center/basic-information/interface-key spring.ai.minimax.chat.enabled=true spring.ai.minimax.api-key=sk-xxx # spring.ai.minimax.api-key=placeholder # spring.ai.minimax.chat.options.model=minimax-v1 # https://docs.spring.io/spring-ai/reference/api/vectordbs/pgvector.html#pgvector-properties # spring.ai.vectorstore.pgvector.index-type=HNSW # spring.ai.vectorstore.pgvector.distance-type=COSINE_DISTANCE # spring.ai.vectorstore.pgvector.dimensions=1024 # # https://docs.spring.io/spring-ai/reference/api/vectordbs/redis.html spring.ai.vectorstore.redis.enabled=true spring.ai.vectorstore.redis.initialize-schema=true # spring.ai.vectorstore.redis.uri=redis://127.0.0.1:6379 spring.ai.vectorstore.redis.index-name=bytedesk_vs_index spring.ai.vectorstore.redis.prefix=bytedesk_vs_prefix: # spring.ai.vectorstore.redis.batching-strategy=TOKEN_COUNT # Optional: Controls how documents are batched for embedding # elasticsearch # 浏览器可视化插件管理 es-client: https://gitee.com/q2316367743/es-client # 配置参数 https://docs.spring.io/spring-ai/reference/api/vectordbs/elasticsearch.html#elasticsearchvector-properties spring.elasticsearch.uris=http://127.0.0.1:19200 spring.elasticsearch.username=elastic spring.elasticsearch.password=bytedesk123 # spring.ai.vectorstore.elasticsearch.enabled=true spring.ai.vectorstore.elasticsearch.initialize-schema=true spring.ai.vectorstore.elasticsearch.index-name=bytedesk_vs_index spring.ai.vectorstore.elasticsearch.dimensions=1024 # cosine/l2_norm/dot_product spring.ai.vectorstore.elasticsearch.similarity=cosine # chroma spring.ai.vectorstore.chroma.enabled=false spring.ai.vectorstore.chroma.uri=http://127.0.0.1:18000 spring.ai.vectorstore.chroma.collection-name=bytedesk_vs_collection spring.ai.vectorstore.chroma.distance-function=COSINE spring.ai.vectorstore.chroma.embedding-dimension=1024 # weaviate spring.ai.vectorstore.weaviate.enabled=false spring.ai.vectorstore.weaviate.host=127.0.0.1 spring.ai.vectorstore.weaviate.port=18080 spring.ai.vectorstore.weaviate.scheme=http spring.ai.vectorstore.weaviate.index-name=BytedeskVectors spring.ai.vectorstore.weaviate.text-field-name=content # milvus spring.ai.vectorstore.milvus.enabled=false spring.ai.vectorstore.milvus.host=127.0.0.1 spring.ai.vectorstore.milvus.port=19530 spring.ai.vectorstore.milvus.collection-name=bytedesk_vectors spring.ai.vectorstore.milvus.vector-field=embedding spring.ai.vectorstore.milvus.text-field=content spring.ai.vectorstore.milvus.dimensions=1024 # =============================== # = spring ai mcp # https://contribute.liquibase.com/extensions-channels/directory/integration-docs/springboot/configuration/ # =============================== # https://docs.spring.io/spring-ai/reference/api/mcp/mcp-client-boot-starter-docs.html spring.ai.mcp.client.enabled=false # logging.level.org.springframework.ai.mcp=WARN # logging.level.org.springframework.ai.mcp.client.transport.StdioClientTransport=WARN # logging.level.org.springframework.ai.mcp.samples.brave=INFO # logging.level.io.modelcontextprotocol.client=WARN # logging.level.io.modelcontextprotocol.spec=WARN # mcp servers # https://github.com/modelcontextprotocol/servers # https://docs.spring.io/spring-ai/reference/api/mcp/mcp-server-boot-starter-docs.html # https://github.com/spring-projects/spring-ai/blob/b29076f/auto-configurations/spring-ai-mcp-server/src/main/java/org/springframework/ai/autoconfigure/mcp/server/McpServerProperties.java spring.ai.mcp.server.enable=false # spring.ai.mcp.server.name=bytedesk-starter # spring.ai.mcp.server.version=0.0.1 # SYNC or ASYNC spring.ai.mcp.server.type=SYNC # Transport configuration spring.ai.mcp.server.stdio=false # spring.ai.mcp.server.sse-message-endpoint=/mcp/message # spring.ai.mcp.server.resource-change-notification=true # spring.ai.mcp.server.tool-change-notification=true # spring.ai.mcp.server.prompt-change-notification=true # =============================== # = Spring Batch Configuration # =============================== # 禁止启动时自动执行作业 spring.batch.job.enabled=false # 始终初始化批处理表,生产环境建议设置为never spring.batch.jdbc.initialize-schema=never # 表前缀,默认是BATCH_ # spring.batch.jdbc.schema=classpath:org/springframework/batch/core/schema-mysql.sql # spring.batch.jdbc.table-prefix=BD_BATCH_ # # =============================== # = liquibase # https://contribute.liquibase.com/extensions-channels/directory/integration-docs/springboot/configuration/ # =============================== spring.liquibase.enabled=true spring.liquibase.change-log=classpath:db/changelog/master.xml # =============================== # = flowable # https://www.flowable.com/open-source/docs/bpmn/ch05a-Spring-Boot # =============================== # 禁止自动部署流程文件 # flowable.check-process-definitions=false # flowable.deployment-enabled=false # 禁止CMMN自动部署 # flowable.cmmn.enabled=false # flowable.cmmn.deployment-enabled=false # 禁止DMN自动部署 # flowable.dmn.enabled=false # flowable.dmn.deployment-enabled=false # 禁止Form自动部署 # flowable.form.enabled=false # flowable.form.deployment-enabled=false # 禁止Content自动部署 # flowable.content.enabled=false # flowable.content.deployment-enabled=false # 禁止Event Registry自动部署 # flowable.eventregistry.enabled=false # flowable.eventregistry.deployment-enabled=false # =============================== # = Flowable 日志配置 # =============================== logging.level.org.flowable=WARN logging.level.org.flowable.app=WARN logging.level.org.flowable.engine=WARN logging.level.org.flowable.cmmn=WARN logging.level.org.flowable.dmn=WARN logging.level.org.flowable.idm=WARN logging.level.org.flowable.eventregistry=WARN logging.level.org.flowable.common=WARN # =============================== # = 百度翻译 # https://fanyi-api.baidu.com/doc/21 # =============================== bytedesk.translate.baidu.appid=placeholder bytedesk.translate.baidu.key=placeholder # 抖音开放平台 # https://developer.open-douyin.com/webapp/aw74cmav4symty7z/setting/app-info # douyin.client.key=placeholder # douyin.client.secret=placeholder # # =============================== # = 阿里云OSS访问密钥 + 短信服务 # =============================== aliyun.region.id=cn-hangzhou # 获取阿里云密钥 https://ram.console.aliyun.com/profile/access-keys aliyun.access.key.id=placeholder aliyun.access.key.secret=placeholder # 阿里云OSS服务相关配置 # OSS的endpoint,这里是华南地区(也就是深圳) aliyun.oss.endpoint=https://oss-cn-shenzhen.aliyuncs.com aliyun.oss.base.url=https://bytedesk.oss-cn-shenzhen.aliyuncs.com # 这是创建的bucket aliyun.oss.bucket.name=placeholder # 这里已经把自己的域名映射到bucket地址了。需要设置域名绑定,设置域名CNAME(暂不使用) aliyun.oss.img.domain=placeholder # 阿里云短信服务 # 短信签名 https://dysms.console.aliyun.com/domestic/text/sign aliyun.sms.signname=微语 # 短信模板管理 https://dysms.console.aliyun.com/domestic/text/template aliyun.sms.templatecode=SMS_xxxxxxxxx # # =============================== # = 腾讯云COS对象存储访问密钥 # =============================== # 创建bucket并需要在此bucket下创建文件夹:apns/development(二级文件夹), apns/production(二级文件夹), avatars, images, voices, files # 储桶所属地域 tencent.bucket.location=ap-shanghai # 存储桶名称 tencent.bucket.name= # 访问域名 tencent.bucket.domain= #API密钥管理获取 tencent.appid= tencent.secretid= tencent.secretkey= # =============================== # = 微信支付 # =============================== bytedesk.wechat.pay.enabled=false bytedesk.wechat.pay.certpath='' bytedesk.wechat.pay.appid= bytedesk.wechat.pay.mch_id= bytedesk.wechat.pay.key= bytedesk.wechat.pay.notify_url= # =============================== # = docker compose # 可以 cd 到 starter/src/main/resources 目录下,事先启动容器,然后启动项目,或者直接启动项目,项目会自动启动容器(但会等待容器启动完成) # 启动容器中依赖:docker compose -p bytedesk -f compose.yaml up -d # 停止容器中依赖:docker compose -p bytedesk -f compose.yaml down #= 跟模块 spring-boot-docker-compose 配合使用 # https://spring.io/guides/topicals/spring-boot-docker # https://spring.io/blog/2023/06/21/docker-compose-support-in-spring-boot-3-1 # https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-docker-compose # https://hub.docker.com/r/jackning/bytedesk # https://springdoc.cn/docker-compose-support-spring-boot/ # https://docs.spring.io/spring-boot/docs/3.2.0/reference/htmlsingle/#features.docker-compose # =============================== # true 表示启用 docker compose # false 表示禁用 docker compose spring.docker.compose.enabled=false # 指定 docker compose 文件路径,路径:starter/src/main/resources spring.docker.compose.file=classpath:compose.yaml # 设置Docker Compose项目名称,相当于命令行中的 -p 参数 spring.docker.compose.project-name=bytedesk