Simplify environment configuration to only essential fields

This commit is contained in:
yuany3721 2025-12-19 18:39:10 +08:00
parent 0c3be79f3c
commit f39a92519a
4 changed files with 18 additions and 53 deletions

View File

@ -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
# 端口配置
# 容器对外暴露的端口(修改后需要更新 docker-compose.yml 中的端口映射)
EXTERNAL_PORT=80

View File

@ -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. **权限问题**

View File

@ -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"

View File

@ -21,7 +21,7 @@ services:
container_name: notepad-frontend
restart: unless-stopped
ports:
- "80:80"
- "${EXTERNAL_PORT:-80}:80"
depends_on:
- backend
env_file: