From f39a92519a8bfb171966f4db78b11665a601446b Mon Sep 17 00:00:00 2001 From: yuany3721 Date: Fri, 19 Dec 2025 18:39:10 +0800 Subject: [PATCH] Simplify environment configuration to only essential fields --- .env.example | 32 +++----------------------------- DEPLOYMENT.md | 19 ++++++------------- backend/src/utils/config.py | 18 ++++++++---------- docker-compose.yml | 2 +- 4 files changed, 18 insertions(+), 53 deletions(-) diff --git a/.env.example b/.env.example index 1a3fb06..2993859 100644 --- a/.env.example +++ b/.env.example @@ -1,36 +1,10 @@ # 应用配置 APP_NAME=Vue3 Python Notepad -APP_VERSION=1.0.0 - -# 后端配置 -BACKEND_HOST=0.0.0.0 -BACKEND_PORT=8000 -PYTHONPATH=/app -PYTHONUNBUFFERED=1 - -# 前端配置 -VITE_API_BASE_URL=/api - -# 文件存储 -NOTES_DIR=/app/data # 安全配置 # 请修改这个密码,建议使用强密码 FILE_LIST_PASSWORD=your_secure_password_here -# JWT 配置 -JWT_SECRET_KEY=your_jwt_secret_key_here_change_this_in_production -JWT_ALGORITHM=HS256 -JWT_EXPIRE_MINUTES=1440 # 24小时 - -# Docker 配置 -COMPOSE_PROJECT_NAME=notepad - -# 可选:日志级别 -LOG_LEVEL=info - -# 可选:最大文件大小(字节) -MAX_FILE_SIZE=100000 - -# 可选:文件名最大长度 -MAX_FILENAME_LENGTH=200 \ No newline at end of file +# 端口配置 +# 容器对外暴露的端口(修改后需要更新 docker-compose.yml 中的端口映射) +EXTERNAL_PORT=80 \ No newline at end of file diff --git a/DEPLOYMENT.md b/DEPLOYMENT.md index aac4264..df0ced7 100644 --- a/DEPLOYMENT.md +++ b/DEPLOYMENT.md @@ -16,15 +16,11 @@ nano .env **必须修改的配置:** - `FILE_LIST_PASSWORD` - 设置强密码(建议使用随机生成的密码) -- `JWT_SECRET_KEY` - 设置随机密钥(建议使用 32 位以上随机字符串) -**生成强密码和密钥的方法:** +**生成强密码的方法:** ```bash # 生成密码 openssl rand -base64 32 - -# 生成 JWT 密钥 -openssl rand -hex 32 ``` ### 2. 文件权限设置 @@ -69,17 +65,14 @@ curl http://localhost/api/health | 变量名 | 说明 | 默认值 | 是否必须修改 | |--------|------|--------|------------| -| `FILE_LIST_PASSWORD` | 文件列表访问密码 | admin123 | **是** | -| `JWT_SECRET_KEY` | JWT 签名密钥 | your-secret-key | **是** | -| `NOTES_DIR` | 文件存储目录 | /app/data | 否 | -| `MAX_FILE_SIZE` | 最大文件大小(字节) | 100000 | 否 | -| `JWT_EXPIRE_MINUTES` | JWT 过期时间(分钟) | 1440 | 否 | +| `APP_NAME` | 应用名称 | Vue3 Python Notepad | 否 | +| `FILE_LIST_PASSWORD` | 文件列表访问密码 | your_secure_password_here | **是** | +| `EXTERNAL_PORT` | 容器对外暴露的端口 | 80 | 否 | ## 安全建议 1. **定期更换密码** - 建议每 3 个月更换一次 `FILE_LIST_PASSWORD` - - 每年更换一次 `JWT_SECRET_KEY` 2. **使用 HTTPS** - 配置反向代理(Nginx/Traefik) @@ -100,8 +93,8 @@ curl http://localhost/api/health - 检查 `.env` 文件中的 `FILE_LIST_PASSWORD` - 重启容器:`docker-compose restart backend` -2. **JWT 错误** - - 检查 `.env` 文件中的 `JWT_SECRET_KEY` +2. **认证错误** + - 检查 `.env` 文件中的 `FILE_LIST_PASSWORD` - 清除浏览器 localStorage 中的 token 3. **权限问题** diff --git a/backend/src/utils/config.py b/backend/src/utils/config.py index a724dd3..5abde72 100644 --- a/backend/src/utils/config.py +++ b/backend/src/utils/config.py @@ -7,23 +7,21 @@ class Settings(BaseSettings): # 基础配置 app_name: str = os.getenv("APP_NAME", "Vue3 + Python Notepad") - app_version: str = os.getenv("APP_VERSION", "1.0.0") - debug: bool = os.getenv("DEBUG", "false").lower() == "true" # 文件存储配置 - notes_dir: str = os.getenv("NOTES_DIR", "/app/data") + notes_dir: str = "/app/data" # 安全配置 file_list_password: str = os.getenv("FILE_LIST_PASSWORD", "admin123") - # JWT配置 - jwt_secret_key: str = os.getenv("JWT_SECRET_KEY", "your-secret-key-change-this-in-production") - jwt_algorithm: str = os.getenv("JWT_ALGORITHM", "HS256") - jwt_expire_minutes: int = int(os.getenv("JWT_EXPIRE_MINUTES", "1440")) # 24小时 + # JWT配置(使用固定值,简化配置) + jwt_secret_key: str = "default-secret-key-change-in-production" + jwt_algorithm: str = "HS256" + jwt_expire_minutes: int = 1440 # 24小时 - # 文件限制 - max_file_size: int = int(os.getenv("MAX_FILE_SIZE", "100000")) # 100KB - max_filename_length: int = int(os.getenv("MAX_FILENAME_LENGTH", "200")) + # 文件限制(使用固定值,简化配置) + max_file_size: int = 100000 # 100KB + max_filename_length: int = 200 class Config: env_file = ".env" diff --git a/docker-compose.yml b/docker-compose.yml index dba6461..f304cd6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -21,7 +21,7 @@ services: container_name: notepad-frontend restart: unless-stopped ports: - - "80:80" + - "${EXTERNAL_PORT:-80}:80" depends_on: - backend env_file: