Files
weiyu/deploy/server/config/application.properties
jack ning 5659a66f82 update
2025-06-18 16:50:18 +08:00

922 lines
37 KiB
Properties
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ===============================
#=bytedesk
# ===============================
bytedesk.debug=true
bytedesk.edition=COMMUNITY
bytedesk.version=0.8.4
# 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
# privacy policy url
bytedesk.custom.privacy-policy-url=
# terms of service url
bytedesk.custom.terms-of-service-url=
# 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/
# Admin config
# admin email
bytedesk.admin.email=admin@email.com
# admin password
bytedesk.admin.password=admin
# create/import member default password
bytedesk.admin.password-default=123456
# 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
# Organization config
# organization name
bytedesk.organization.name=MyCompany
# organization code
bytedesk.organization.code=bytedesk
# Features config
# enable java ai
bytedesk.features.java-ai=true
# enable python ai
bytedesk.features.python-ai=false
# send email by javamail, valid value: javamail/aliyun
bytedesk.features.email-type=javamail
# avatar base urlhttp://127.0.0.1:9003
bytedesk.features.avatar-base-url=
# 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
# Upload config, no '/'
bytedesk.upload.type=local
# upload dir
bytedesk.upload.dir=uploads
# upload url
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
# api url
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
# ===============================
# redis pool config
# ===============================
bytedesk.redis.pool-config.maxIdle=64
bytedesk.redis.pool-config.maxTotal=64
bytedesk.redis.pool-config.minIdle=8
# ===============================
# 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
# ===============================
#=logging
# https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#appendix.application-properties.core
# 五种levelTRACE、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.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
# https://www.cnblogs.com/suizhikuo/p/16997225.html
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+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
# disable redis repository
spring.data.redis.repositories.enabled=false
# ===============================
#=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
# 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
# ollama:
# ollama pull qwen3:0.6b
# ollama pull bge-m3:latest
# 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
# 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 Keyhttps://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
# spring.ai.zhipuai.embedding.options.model=embedding-2
#
# 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
# 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
# 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.base-url=https://dashscope.aliyuncs.com/compatible-mode
spring.ai.dashscope.api-key=sk-xxx
spring.ai.dashscope.chat.enabled=false
spring.ai.dashscope.chat.options.model=deepseek-r1
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
#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
# 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=<INSERT KEY HERE>
# 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=1536
#
# 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=1536
# 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=1536
# 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=1536
# ===============================
# = 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_
# ===============================
# = 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
# https://docs.spring.io/spring-ai/reference/api/mcp/mcp-server-boot-starter-docs.html
spring.ai.mcp.server.enable=false
#
# ===============================
# = 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
# ===============================
# = 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