chore: 更新配置和依赖

- 添加 MinIO 和邮件服务相关环境变量
- 添加 @nestjs-modules/mailer, minio, multer 等依赖
- 更新 app.module.ts 注册新模块
- docker-compose 添加 MinIO 服务配置

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
charilezhou
2026-01-19 12:36:20 +08:00
parent 1627d98be5
commit d9673e2ba3
6 changed files with 1321 additions and 9 deletions

View File

@@ -15,3 +15,26 @@ ENABLE_ENCRYPTION=false
# AES-256-GCM 加密密钥 (32 字节 Base64 编码)
# 开发环境默认密钥 (仅用于开发测试,生产环境必须更换)
ENCRYPTION_KEY=dGhpc2lzYXRlc3RrZXlmb3JkZXZlbG9wbWVudG9ubHk
# ----- SMTP 邮件配置 -----
# SMTP 服务器地址
SMTP_HOST=smtpdm.aliyun.com
# SMTP 端口(通常 587 或 465
SMTP_PORT=465
# 是否使用 SSL/TLS端口 465 时通常为 true
SMTP_SECURE=true
# SMTP 用户名
SMTP_USER=system@notice.seclusion.dev
# SMTP 密码或应用专用密码
SMTP_PASS=nIZvj5RPuvyB2h
# 发件人地址
SMTP_FROM=system@notice.seclusion.dev
# ----- MinIO 对象存储配置 -----
MINIO_ENDPOINT=localhost
MINIO_PORT=9000
MINIO_USE_SSL=false
MINIO_ACCESS_KEY=minioadmin
MINIO_SECRET_KEY=minioadmin
MINIO_BUCKET=seclusion
MINIO_PUBLIC_URL=

View File

@@ -36,3 +36,35 @@ ENABLE_ENCRYPTION=false
# 生成方式: openssl rand -base64 32
# 注意: 生产环境必须使用强随机密钥,且前后端保持一致
ENCRYPTION_KEY=
# ----- SMTP 邮件配置 -----
# SMTP 服务器地址
SMTP_HOST=smtp.example.com
# SMTP 端口(通常 587 或 465
SMTP_PORT=587
# 是否使用 SSL/TLS端口 465 时通常为 true
SMTP_SECURE=false
# SMTP 用户名
SMTP_USER=your-email@example.com
# SMTP 密码或应用专用密码
SMTP_PASS=your-password
# 发件人地址
SMTP_FROM=noreply@example.com
# ----- MinIO 对象存储配置 -----
# MinIO 服务地址
MINIO_ENDPOINT=localhost
# MinIO 端口
MINIO_PORT=9000
# 是否使用 SSL
MINIO_USE_SSL=false
# MinIO 访问密钥
MINIO_ACCESS_KEY=minioadmin
# MinIO 密钥
MINIO_SECRET_KEY=minioadmin
# 存储桶名称
MINIO_BUCKET=seclusion
# 公开访问 URL可选用于 CDN 或 Nginx 代理)
# 如果设置,将使用此 URL 作为文件访问地址前缀
# 示例: https://cdn.example.com 或 https://example.com/storage
MINIO_PUBLIC_URL=

View File

@@ -33,12 +33,15 @@
"class-transformer": "^0.5.1",
"class-validator": "^0.14.1",
"ioredis": "^5.9.2",
"minio": "^8.0.6",
"nanoid": "^5.1.6",
"nodemailer": "^7.0.12",
"passport": "^0.7.0",
"passport-jwt": "^4.0.1",
"reflect-metadata": "^0.2.2",
"rxjs": "^7.8.1",
"svg-captcha": "^1.4.0"
"svg-captcha": "^1.4.0",
"uuid": "^13.0.0"
},
"devDependencies": {
"@nestjs/cli": "^10.4.9",
@@ -49,8 +52,11 @@
"@types/bcrypt": "^5.0.2",
"@types/express": "^5.0.0",
"@types/jest": "^29.5.14",
"@types/multer": "^2.0.0",
"@types/node": "^22.10.2",
"@types/nodemailer": "^7.0.5",
"@types/passport-jwt": "^4.0.1",
"@types/uuid": "^11.0.0",
"dotenv-cli": "^11.0.0",
"eslint": "^9.39.0",
"jest": "^29.7.0",

View File

@@ -6,7 +6,11 @@ import { AppService } from './app.service';
import { AuthModule } from './auth/auth.module';
import { CaptchaModule } from './common/captcha/captcha.module';
import { CryptoModule } from './common/crypto/crypto.module';
import { EmailCodeModule } from './common/email-code/email-code.module';
import { MailModule } from './common/mail/mail.module';
import { RedisModule } from './common/redis/redis.module';
import { StorageModule } from './common/storage/storage.module';
import { FileModule } from './file/file.module';
import { PermissionModule } from './permission/permission.module';
import { PrismaModule } from './prisma/prisma.module';
import { UserModule } from './user/user.module';
@@ -22,6 +26,10 @@ import { UserModule } from './user/user.module';
RedisModule,
CryptoModule,
CaptchaModule,
MailModule,
EmailCodeModule,
StorageModule,
FileModule,
AuthModule,
UserModule,
PermissionModule,

View File

@@ -30,6 +30,25 @@ services:
timeout: 5s
retries: 5
minio:
image: minio/minio:latest
container_name: seclusion-minio
ports:
- "9000:9000"
- "9001:9001"
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
volumes:
- minio_data:/data
command: server /data --console-address ":9001"
healthcheck:
test: ["CMD", "mc", "ready", "local"]
interval: 5s
timeout: 5s
retries: 5
volumes:
postgres_data:
redis_data:
minio_data:

1240
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff