# # =============================== # Server Properties #=https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#appendix.application-properties.server # =============================== spring.application.name=bytedesk application.title=https://www.weiyuai.cn application.version=0.4.2 # server.host=127.0.0.1 server.port=9003 # =============================== #=freemarker # =============================== spring.freemarker.template-loader-path=classpath:/templates/ftl/ spring.freemarker.suffix=.ftl # 仅适用于测试阶段,线上注释掉 # spring.freemarker.cache=false spring.freemarker.charset=UTF-8 spring.freemarker.content-type=text/html spring.freemarker.expose-request-attributes=true spring.freemarker.expose-session-attributes=true # =============================== #=bytedesk # =============================== bytedesk.debug=true # default admin username/password/email/mobile info # 默认管理员用户名密码 bytedesk.email=admin@email.com bytedesk.password=admin # 创建member时,自动生成用户的密码 bytedesk.password-default=123456 # 默认管理员昵称 bytedesk.nickname=Administrator # system use mobile number 12345678000~12345678999 as test mobile number, verification code is 123456 # 系统默认使用 12345678000~12345678999 作为测试手机号,验证码为123456 # 默认管理员手机号 bytedesk.mobile=12345678000 # 白名单手机号默认发送短信验证码为:bytedesk.mobile-code 中设置的值,用于测试,否则随机发送6位验证码 bytedesk.mobile-whitelist=18888888000,18888888001,18888888002,18888888003,18888888004,18888888005,18888888006 # 白名单和默认用户-手机号验证码,用于测试,否则随机发送6位验证码 bytedesk.mobile-code=123456 # 默认生成组织昵称和唯一代码 bytedesk.organization-name=MyCompany bytedesk.organization-code=bytedesk # bytedesk.timezone=GMT+8 bytedesk.javaai=false bytedesk.pythonai=true # =============================== #=bytedesk cors config # =============================== bytedesk.cors-allowed-origins=* # bytedesk.cors-allowed-origins=http://127.0.0.1:9006 # =============================== #=bytedesk jwt config # =============================== # please change jwt secret key to your own, length=64 # use this: https://www.browserling.com/tools/random-hex bytedesk.jwt-secret-key=1dfaf8d004207b628a9a6b859c429f49a9a7ead9fd8161c1e60847aeef06dbd2 # 2592000000 # 30 days, milliseconds bytedesk.jwt-expiration=2592000000 # 5184000000 # 60 days, milliseconds bytedesk.jwt-refresh-token-expiration=5184000000 # =============================== #=bytedesk cache config # =============================== # 0: no cache, 1: caffeine cache, 2: caffeine + redis cache bytedesk.cache-level=2 bytedesk.cache-prefix=bytedeskim # cache.caffeine.maximumSize=1000 # cache.caffeine.expireAfterWriteSeconds=5 # bytedesk.redis-stream-key=bytedeskim:stream # bytedesk.redis-pubsub-channel=bytedeskim:pubsub # =============================== #=bytedesk upload config # =============================== bytedesk.upload-type=local bytedesk.upload-dir=uploader bytedesk.upload-url=http://127.0.0.1:9003 # bytedesk.upload-url=http://192.168.0.102:9003 # =============================== #=bytedesk kbase config # =============================== bytedesk.kbase.theme=default # =============================== #=bytedesk ip2region config # https://github.com/lionsoul2014/ip2region/blob/master/binding/java/ReadMe.md # =============================== # bytedesk.ip2region-db-path=ip2region.db # =============================== #=com.bytedesk.socket module # =============================== bytedesk.socket.host=0.0.0.0 bytedesk.socket.port=9883 bytedesk.socket.websocket-port=9885 bytedesk.socket.leak-detector-level=SIMPLE bytedesk.socket.parent-event-loop-group-thread-count=1 bytedesk.socket.child-event-loop-group-thread-count=8 bytedesk.socket.max-payload-size=10240 # =============================== #=com.bytedesk.cluster module # =============================== bytedesk.cluster=false # bytedesk.cluster-nodes=127.0.0.1,IP_ADDRESS,IP_ADDRESS # bytedesk.cluster.host=230.0.0.0 # bytedesk.cluster.port=6781 # bytedesk.cluster.client-port=6771 # =============================== # 文件上传类型: # 上传到本地:simple # 上传到阿里云:aliyun # =============================== # # 本地存储文件 # #upload.type=simple # upload.dir.path=upload # upload.url.prefix=http://192.168.0.100:8000/ # #upload.url.prefix=http://127.0.0.1:8000/ # #upload.url.prefix=http://10.0.2.2:8000/ # # 阿里云OSS # upload.type=aliyun # # 腾讯云cos # # upload.type=tencent # # 自定义文件夹前缀,用于阿里云和腾讯云 upload.dir.prefix= # # =============================== # = 阿里云OSS访问密钥 # =============================== aliyun.region.id=123 aliyun.access.key.id=123 aliyun.access.key.secret=123 # 阿里云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=123 # 这里已经把自己的域名映射到bucket地址了。需要设置域名绑定,设置域名CNAME(暂不使用) aliyun.oss.img.domain=123 # 阿里云短信服务的签名,可以在控制台找到,如是中文,请转为Unicode aliyun.sms.signname=123 #阿里云短信服务的模板Code,可以在控制台找到 # 萝卜丝验证码 aliyun.sms.templatecode=123 # 验证码 aliyun.sms.liangshibao.signname=123 aliyun.sms.liangshibao.templatecode=123 # 预约提醒 aliyun.sms.liangshibao.appointcode=123 # # =============================== # = 腾讯云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= # =============================== #=logging # https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#appendix.application-properties.core # 五种level:TRACE、DEBUG、INFO、WARN和ERROR # =============================== logging.level.web=DEBUG logging.level.org.springframework.security.web.FilterChainProxy=DEBUG # logging.level.org.springframework.messaging=WARN # logging.level.org.springframework.web=INFO # logging.level.org.springframework.security=INFO #trace=true # 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.file.name=logs/bytedeskim.log logging.file.max-size=10MB logging.file.max-history=10 # logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} - %logger{36} - %msg%n # =============================== #= 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 # =============================== spring.datasource.url=jdbc:mysql://127.0.0.1:3306/bytedesk_im 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 # =============================== #= postgre # https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#appendix.application-properties.data # 因本地占用,将5432改为5433 # =============================== # spring.datasource.url=jdbc:postgresql://127.0.0.1:5433/bytedesk_im # spring.datasource.username=postgres # spring.datasource.password=C8aJEVCCvSA1VFi8 # 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 # 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-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 # =============================== spring.data.redis.database=0 spring.data.redis.host=127.0.0.1 spring.data.redis.port=6379 spring.data.redis.password=C8aJEVCCvSA1VFi8 # disable redis repository spring.data.redis.repositories.enabled=false # redis pool config common.redis.pool-config.maxIdle=64 common.redis.pool-config.maxTotal=64 common.redis.pool-config.minIdle=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-data-security # =============================== # properties: https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#appendix.application-properties.security # spring.security.user.name=user # spring.security.user.password=123456 # =============================== #=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 # =============================== management.endpoints.web.base-path=/actuator management.endpoints.web.exposure.include=* management.metrics.tags.application=bytedesk # management.info.env.enabled=true # http://127.0.0.1:9003/actuator/prometheus management.endpoint.prometheus.enabled=true management.prometheus.metrics.export.enabled=true # # =============================== #=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 springdoc.swagger-ui.enabled=true springdoc.swagger-ui.path=/index.html springdoc.api-docs.enabled=true springdoc.api-docs.path=/v3/api-docs # =============================== #=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 # =============================== # spring.artemis.mode=embedded # # =============================== # = 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 # =============================== #= 跟模块 spring-boot-docker-compose 配合使用 # https://springdoc.cn/docker-compose-support-spring-boot/ # =============================== # spring.docker.compose.enabled=true # spring.docker.compose.file=docker-compose.yaml # spring.docker.compose.profiles.active=myprofile # # =============================== # = ai # =============================== # spring.mvc.async.request-timeout=10000 logging.level.org.springframework.ai.chat.client.advisor=DEBUG # moonshot # https://docs.spring.io/spring-ai/reference/api/chat/moonshot-chat.html spring.ai.moonshot.chat.enabled=true # spring.ai.moonshot.base-url=api.moonshot.cn spring.ai.moonshot.api-key=sk-placeholder # 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=placeholder # spring.ai.minimax.api-key=placeholder # spring.ai.minimax.chat.options.model=minimax-v1 # 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.chat.enabled=true # spring.ai.zhipuai.chat.base-url=URL_ADDRESS spring.ai.zhipuai.api-key=f03410085cb038ec41098ae7ca6ef047.TrJMIwAULDG12345 # 免费模型: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 # # ollama list: # mistral # qwen:7b # llama2 # https://docs.spring.io/spring-ai/reference/api/chat/ollama-chat.html spring.ai.ollama.base-url=http://127.0.0.1:11434 spring.ai.ollama.chat.enabled=false spring.ai.ollama.chat.options.model=mistral 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=false # https://github.com/ollama/ollama?tab=readme-ov-file#model-library spring.ai.ollama.embedding.options.model=mistral # spring.ai.ollama.embedding.options.numa=false # # 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.initialize-schema=false spring.ai.vectorstore.redis.uri=redis://127.0.0.1:6379 spring.ai.vectorstore.redis.index=bytedesk_vs_index spring.ai.vectorstore.redis.prefix=bytedesk_vs_prefix: # # =============================== # = liquibase # https://contribute.liquibase.com/extensions-integrations/directory/integration-docs/springboot/configuration/ # =============================== spring.liquibase.enabled=true spring.liquibase.change-log=classpath:db/changelog/master.xml # =============================== # = oauth # github:https://github.com/settings/applications/new # =============================== bytedesk.oauth.github.clientid=clientid bytedesk.oauth.github.clientsecret=clientid # =============================== # = third projects config # =============================== bytedesk.liangshibao.host=http://127.0.0.1:9003 bytedesk.liangshibao.path=/Users/ningjinpeng/Desktop/git/private/liangshibao/web/ # =============================== # = 百度翻译 # https://fanyi-api.baidu.com/doc/21 # =============================== translate.baidu.appid=placeholder translate.baidu.key=placeholder # 抖音开放平台 # https://developer.open-douyin.com/webapp/aw74cmav4symty7z/setting/app-info douyin.client.key=aw74cmav4symty7z douyin.client.secret=e758131d44eacb5bf2b7fc3d9edfe544 # =============================== # = docker compose # =============================== spring.docker.compose.enabled=false spring.docker.compose.file=docker-compose.yaml