From 155a7a96ef5abca5aac469b8a952b681749e704e Mon Sep 17 00:00:00 2001 From: jack ning Date: Sun, 27 Jul 2025 23:28:22 +0800 Subject: [PATCH] update --- deploy/docker/docker-compose-ollama.yaml | 35 ++++++++++++++ deploy/docker/docker-compose.yaml | 35 ++++++++++++++ .../core/upload/UploadRestService.java | 1 + .../{cloud => aliyun}/AliyunConfig.java | 4 +- .../upload/{cloud => aliyun}/AliyunOss.java | 2 +- .../{cloud => aliyun}/AliyunProperties.java | 2 +- .../upload/{cloud => minio}/MinioConfig.java | 2 +- .../UploadMinioRestController.java | 4 +- .../{ => minio}/UploadMinioService.java | 2 +- .../core/upload/tencent/TencentConfig.java | 42 ++++++++++++++++ .../upload/{cloud => tencent}/TencentCos.java | 2 +- .../upload/tencent/TencentProperties.java | 48 +++++++++++++++++++ 12 files changed, 171 insertions(+), 8 deletions(-) rename modules/core/src/main/java/com/bytedesk/core/upload/{cloud => aliyun}/AliyunConfig.java (95%) rename modules/core/src/main/java/com/bytedesk/core/upload/{cloud => aliyun}/AliyunOss.java (99%) rename modules/core/src/main/java/com/bytedesk/core/upload/{cloud => aliyun}/AliyunProperties.java (97%) rename modules/core/src/main/java/com/bytedesk/core/upload/{cloud => minio}/MinioConfig.java (97%) rename modules/core/src/main/java/com/bytedesk/core/upload/{ => minio}/UploadMinioRestController.java (98%) rename modules/core/src/main/java/com/bytedesk/core/upload/{ => minio}/UploadMinioService.java (99%) create mode 100644 modules/core/src/main/java/com/bytedesk/core/upload/tencent/TencentConfig.java rename modules/core/src/main/java/com/bytedesk/core/upload/{cloud => tencent}/TencentCos.java (99%) create mode 100644 modules/core/src/main/java/com/bytedesk/core/upload/tencent/TencentProperties.java diff --git a/deploy/docker/docker-compose-ollama.yaml b/deploy/docker/docker-compose-ollama.yaml index bf3d4882ef..b2d39ad9d2 100644 --- a/deploy/docker/docker-compose-ollama.yaml +++ b/deploy/docker/docker-compose-ollama.yaml @@ -124,6 +124,30 @@ services: timeout: 10s retries: 5 + # MinIO 对象存储服务 + # http://localhost:19000 - MinIO Console + # http://localhost:19001 - MinIO API + bytedesk-minio: + image: minio/minio:latest + container_name: minio-bytedesk + environment: + - MINIO_ROOT_USER=minioadmin + - MINIO_ROOT_PASSWORD=minioadmin123 + - TZ=Asia/Shanghai + ports: + - "19000:9000" # API + - "19001:9001" # Console + volumes: + - minio_data:/data + command: minio server /data --console-address ":9001" + networks: + - bytedesk-network + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] + interval: 30s + timeout: 10s + retries: 5 + bytedesk: # image: bytedesk/bytedesk:latest # hub.docker.com enterprise # image: bytedesk/bytedesk-ce:latest # hub.docker.com community @@ -137,6 +161,7 @@ services: - bytedesk-elasticsearch - bytedesk-artemis - bytedesk-zipkin + - bytedesk-minio # bytedesk-mysql: # condition: service_healthy # bytedesk-redis: @@ -219,6 +244,14 @@ services: BYTEDESK_UPLOAD_DIR: /app/uploads # 上传文件的访问地址,请修改为服务器实际的地址 BYTEDESK_UPLOAD_URL: http://127.0.0.1:9003 + # MinIO配置(当使用MinIO时) + BYTEDESK_MINIO_ENABLED: "false" + BYTEDESK_MINIO_ENDPOINT: http://bytedesk-minio:9000 # Docker内部通信使用服务名 + BYTEDESK_MINIO_ACCESS_KEY: minioadmin + BYTEDESK_MINIO_SECRET_KEY: minioadmin123 + BYTEDESK_MINIO_BUCKET_NAME: bytedesk + BYTEDESK_MINIO_REGION: us-east-1 + BYTEDESK_MINIO_SECURE: false # Knowledge base config BYTEDESK_KBASE_THEME: default BYTEDESK_KBASE_HTML_PATH: helpcenter @@ -473,6 +506,8 @@ volumes: name: bytedesk_artemis_data zipkin_data: name: bytedesk_zipkin_data + minio_data: + name: bytedesk_minio_data networks: bytedesk-network: diff --git a/deploy/docker/docker-compose.yaml b/deploy/docker/docker-compose.yaml index 442a2d5383..81315196fa 100644 --- a/deploy/docker/docker-compose.yaml +++ b/deploy/docker/docker-compose.yaml @@ -107,6 +107,30 @@ services: timeout: 10s retries: 5 + # MinIO 对象存储服务 + # http://localhost:19000 - MinIO Console + # http://localhost:19001 - MinIO API + bytedesk-minio: + image: minio/minio:latest + container_name: minio-bytedesk + environment: + - MINIO_ROOT_USER=minioadmin + - MINIO_ROOT_PASSWORD=minioadmin123 + - TZ=Asia/Shanghai + ports: + - "19000:9000" # API + - "19001:9001" # Console + volumes: + - minio_data:/data + command: minio server /data --console-address ":9001" + networks: + - bytedesk-network + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] + interval: 30s + timeout: 10s + retries: 5 + bytedesk: # image: bytedesk/bytedesk:latest # hub.docker.com enterprise # image: bytedesk/bytedesk-ce:latest # hub.docker.com community @@ -119,6 +143,7 @@ services: - bytedesk-elasticsearch - bytedesk-artemis - bytedesk-zipkin + - bytedesk-minio # bytedesk-mysql: # condition: service_healthy # bytedesk-redis: @@ -199,6 +224,14 @@ services: BYTEDESK_UPLOAD_DIR: /app/uploads # 上传文件的访问地址,请修改为服务器实际的地址 BYTEDESK_UPLOAD_URL: http://127.0.0.1:9003 + # MinIO配置(当使用MinIO时) + BYTEDESK_MINIO_ENABLED: "false" + BYTEDESK_MINIO_ENDPOINT: http://bytedesk-minio:9000 # Docker内部通信使用服务名 + BYTEDESK_MINIO_ACCESS_KEY: minioadmin + BYTEDESK_MINIO_SECRET_KEY: minioadmin123 + BYTEDESK_MINIO_BUCKET_NAME: bytedesk + BYTEDESK_MINIO_REGION: us-east-1 + BYTEDESK_MINIO_SECURE: false # Knowledge base config BYTEDESK_KBASE_THEME: default BYTEDESK_KBASE_HTML_PATH: helpcenter @@ -459,6 +492,8 @@ volumes: name: bytedesk_artemis_data zipkin_data: name: bytedesk_zipkin_data + minio_data: + name: bytedesk_minio_data networks: bytedesk-network: diff --git a/modules/core/src/main/java/com/bytedesk/core/upload/UploadRestService.java b/modules/core/src/main/java/com/bytedesk/core/upload/UploadRestService.java index b984942f96..af834585b0 100755 --- a/modules/core/src/main/java/com/bytedesk/core/upload/UploadRestService.java +++ b/modules/core/src/main/java/com/bytedesk/core/upload/UploadRestService.java @@ -45,6 +45,7 @@ import com.bytedesk.core.rbac.auth.AuthService; import com.bytedesk.core.rbac.user.UserEntity; import com.bytedesk.core.rbac.user.UserProtobuf; import com.bytedesk.core.uid.UidUtils; +import com.bytedesk.core.upload.minio.UploadMinioService; import com.bytedesk.core.upload.storage.UploadStorageException; import com.bytedesk.core.upload.storage.UploadStorageFileNotFoundException; import com.bytedesk.core.utils.BdDateUtils; diff --git a/modules/core/src/main/java/com/bytedesk/core/upload/cloud/AliyunConfig.java b/modules/core/src/main/java/com/bytedesk/core/upload/aliyun/AliyunConfig.java similarity index 95% rename from modules/core/src/main/java/com/bytedesk/core/upload/cloud/AliyunConfig.java rename to modules/core/src/main/java/com/bytedesk/core/upload/aliyun/AliyunConfig.java index 282ce7fa13..9dad4df355 100644 --- a/modules/core/src/main/java/com/bytedesk/core/upload/cloud/AliyunConfig.java +++ b/modules/core/src/main/java/com/bytedesk/core/upload/aliyun/AliyunConfig.java @@ -2,7 +2,7 @@ * @Author: jackning 270580156@qq.com * @Date: 2024-03-15 20:24:35 * @LastEditors: jackning 270580156@qq.com - * @LastEditTime: 2024-03-15 20:32:39 + * @LastEditTime: 2025-07-27 23:24:57 * @Description: bytedesk.com https://github.com/Bytedesk/bytedesk * Please be aware of the BSL license restrictions before installing Bytedesk IM – * selling, reselling, or hosting Bytedesk IM as a service is a breach of the terms and automatically terminates your rights under the license. @@ -11,7 +11,7 @@ * 联系:270580156@qq.com * Copyright (c) 2024 by bytedesk.com, All Rights Reserved. */ -package com.bytedesk.core.upload.cloud; +package com.bytedesk.core.upload.aliyun; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/modules/core/src/main/java/com/bytedesk/core/upload/cloud/AliyunOss.java b/modules/core/src/main/java/com/bytedesk/core/upload/aliyun/AliyunOss.java similarity index 99% rename from modules/core/src/main/java/com/bytedesk/core/upload/cloud/AliyunOss.java rename to modules/core/src/main/java/com/bytedesk/core/upload/aliyun/AliyunOss.java index a80534448a..47645d1155 100644 --- a/modules/core/src/main/java/com/bytedesk/core/upload/cloud/AliyunOss.java +++ b/modules/core/src/main/java/com/bytedesk/core/upload/aliyun/AliyunOss.java @@ -1,4 +1,4 @@ -package com.bytedesk.core.upload.cloud; +package com.bytedesk.core.upload.aliyun; import com.aliyun.oss.OSS; // import com.aliyun.oss.model.PutObjectResult; diff --git a/modules/core/src/main/java/com/bytedesk/core/upload/cloud/AliyunProperties.java b/modules/core/src/main/java/com/bytedesk/core/upload/aliyun/AliyunProperties.java similarity index 97% rename from modules/core/src/main/java/com/bytedesk/core/upload/cloud/AliyunProperties.java rename to modules/core/src/main/java/com/bytedesk/core/upload/aliyun/AliyunProperties.java index 9e1ea69a68..d6ca312c7c 100644 --- a/modules/core/src/main/java/com/bytedesk/core/upload/cloud/AliyunProperties.java +++ b/modules/core/src/main/java/com/bytedesk/core/upload/aliyun/AliyunProperties.java @@ -11,7 +11,7 @@ * 联系:270580156@qq.com * Copyright (c) 2024 by bytedesk.com, All Rights Reserved. */ -package com.bytedesk.core.upload.cloud; +package com.bytedesk.core.upload.aliyun; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/modules/core/src/main/java/com/bytedesk/core/upload/cloud/MinioConfig.java b/modules/core/src/main/java/com/bytedesk/core/upload/minio/MinioConfig.java similarity index 97% rename from modules/core/src/main/java/com/bytedesk/core/upload/cloud/MinioConfig.java rename to modules/core/src/main/java/com/bytedesk/core/upload/minio/MinioConfig.java index 2bd8ab8ee6..80f1f6a6a6 100644 --- a/modules/core/src/main/java/com/bytedesk/core/upload/cloud/MinioConfig.java +++ b/modules/core/src/main/java/com/bytedesk/core/upload/minio/MinioConfig.java @@ -11,7 +11,7 @@ * * Copyright (c) 2025 by bytedesk.com, All Rights Reserved. */ -package com.bytedesk.core.upload.cloud; +package com.bytedesk.core.upload.minio; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; diff --git a/modules/core/src/main/java/com/bytedesk/core/upload/UploadMinioRestController.java b/modules/core/src/main/java/com/bytedesk/core/upload/minio/UploadMinioRestController.java similarity index 98% rename from modules/core/src/main/java/com/bytedesk/core/upload/UploadMinioRestController.java rename to modules/core/src/main/java/com/bytedesk/core/upload/minio/UploadMinioRestController.java index 8de13280f4..cf657ca2e1 100644 --- a/modules/core/src/main/java/com/bytedesk/core/upload/UploadMinioRestController.java +++ b/modules/core/src/main/java/com/bytedesk/core/upload/minio/UploadMinioRestController.java @@ -11,7 +11,7 @@ * 联系:270580156@qq.com * Copyright (c) 2025 by bytedesk.com, All Rights Reserved. */ -package com.bytedesk.core.upload; +package com.bytedesk.core.upload.minio; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.DeleteMapping; @@ -22,6 +22,8 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; +import com.bytedesk.core.upload.UploadRequest; +import com.bytedesk.core.upload.UploadRestService; import com.bytedesk.core.utils.JsonResult; import io.swagger.v3.oas.annotations.Operation; diff --git a/modules/core/src/main/java/com/bytedesk/core/upload/UploadMinioService.java b/modules/core/src/main/java/com/bytedesk/core/upload/minio/UploadMinioService.java similarity index 99% rename from modules/core/src/main/java/com/bytedesk/core/upload/UploadMinioService.java rename to modules/core/src/main/java/com/bytedesk/core/upload/minio/UploadMinioService.java index 5c4988f95b..47281a5619 100644 --- a/modules/core/src/main/java/com/bytedesk/core/upload/UploadMinioService.java +++ b/modules/core/src/main/java/com/bytedesk/core/upload/minio/UploadMinioService.java @@ -11,7 +11,7 @@ * 联系:270580156@qq.com * Copyright (c) 2025 by bytedesk.com, All Rights Reserved. */ -package com.bytedesk.core.upload; +package com.bytedesk.core.upload.minio; import java.io.File; import java.io.InputStream; diff --git a/modules/core/src/main/java/com/bytedesk/core/upload/tencent/TencentConfig.java b/modules/core/src/main/java/com/bytedesk/core/upload/tencent/TencentConfig.java new file mode 100644 index 0000000000..899faefc2e --- /dev/null +++ b/modules/core/src/main/java/com/bytedesk/core/upload/tencent/TencentConfig.java @@ -0,0 +1,42 @@ +/* + * @Author: jackning 270580156@qq.com + * @Date: 2024-03-15 20:24:35 + * @LastEditors: jackning 270580156@qq.com + * @LastEditTime: 2025-07-27 23:24:57 + * @Description: bytedesk.com https://github.com/Bytedesk/bytedesk + * Please be aware of the BSL license restrictions before installing Bytedesk IM – + * selling, reselling, or hosting Bytedesk IM as a service is a breach of the terms and automatically terminates your rights under the license. + * Business Source License 1.1: https://github.com/Bytedesk/bytedesk/blob/main/LICENSE + * contact: 270580156@qq.com + * 联系:270580156@qq.com + * Copyright (c) 2024 by bytedesk.com, All Rights Reserved. + */ +package com.bytedesk.core.upload.tencent; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import com.qcloud.cos.COSClient; +import com.qcloud.cos.ClientConfig; +import com.qcloud.cos.auth.BasicCOSCredentials; +import com.qcloud.cos.auth.COSCredentials; +import com.qcloud.cos.region.Region; + +@Configuration +public class TencentConfig { + + @Autowired + TencentProperties tencentProperties; + + @Bean + public COSClient createCOSClient() { + COSCredentials credentials = new BasicCOSCredentials( + tencentProperties.getSecretId(), + tencentProperties.getSecretKey() + ); + ClientConfig clientConfig = new ClientConfig(new Region(tencentProperties.getBucketLocation())); + return new COSClient(credentials, clientConfig); + } + +} \ No newline at end of file diff --git a/modules/core/src/main/java/com/bytedesk/core/upload/cloud/TencentCos.java b/modules/core/src/main/java/com/bytedesk/core/upload/tencent/TencentCos.java similarity index 99% rename from modules/core/src/main/java/com/bytedesk/core/upload/cloud/TencentCos.java rename to modules/core/src/main/java/com/bytedesk/core/upload/tencent/TencentCos.java index ee444b812c..60dba658f7 100644 --- a/modules/core/src/main/java/com/bytedesk/core/upload/cloud/TencentCos.java +++ b/modules/core/src/main/java/com/bytedesk/core/upload/tencent/TencentCos.java @@ -1,4 +1,4 @@ -package com.bytedesk.core.upload.cloud; +package com.bytedesk.core.upload.tencent; import com.qcloud.cos.COSClient; import com.qcloud.cos.ClientConfig; diff --git a/modules/core/src/main/java/com/bytedesk/core/upload/tencent/TencentProperties.java b/modules/core/src/main/java/com/bytedesk/core/upload/tencent/TencentProperties.java new file mode 100644 index 0000000000..c41bce6c84 --- /dev/null +++ b/modules/core/src/main/java/com/bytedesk/core/upload/tencent/TencentProperties.java @@ -0,0 +1,48 @@ +/* + * @Author: jackning 270580156@qq.com + * @Date: 2024-03-15 20:24:15 + * @LastEditors: jackning 270580156@qq.com + * @LastEditTime: 2025-01-09 23:20:59 + * @Description: bytedesk.com https://github.com/Bytedesk/bytedesk + * Please be aware of the BSL license restrictions before installing Bytedesk IM – + * selling, reselling, or hosting Bytedesk IM as a service is a breach of the terms and automatically terminates your rights under the license. + * Business Source License 1.1: https://github.com/Bytedesk/bytedesk/blob/main/LICENSE + * contact: 270580156@qq.com + * 联系:270580156@qq.com + * Copyright (c) 2024 by bytedesk.com, All Rights Reserved. + */ +package com.bytedesk.core.upload.tencent; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +import lombok.Data; + +@Data +@Component +@ConfigurationProperties(prefix = "tencent") +public class TencentProperties { + + @Value("${tencent.bucket.location:ap-shanghai}") + private String bucketLocation; + + @Value("${tencent.bucket.name:}") + private String bucketName; + + @Value("${tencent.bucket.domain:}") + private String bucketDomain; + + @Value("${tencent.appid:}") + private String appId; + + @Value("${tencent.secretid:}") + private String secretId; + + @Value("${tencent.secretkey:}") + private String secretKey; + + @Value("${upload.dir.prefix:}") + private String uploadDirPrefix; + +} \ No newline at end of file