Simplify environment configuration to only essential fields
This commit is contained in:
parent
0c3be79f3c
commit
f39a92519a
32
.env.example
32
.env.example
@ -1,36 +1,10 @@
|
|||||||
# 应用配置
|
# 应用配置
|
||||||
APP_NAME=Vue3 Python Notepad
|
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
|
FILE_LIST_PASSWORD=your_secure_password_here
|
||||||
|
|
||||||
# JWT 配置
|
# 端口配置
|
||||||
JWT_SECRET_KEY=your_jwt_secret_key_here_change_this_in_production
|
# 容器对外暴露的端口(修改后需要更新 docker-compose.yml 中的端口映射)
|
||||||
JWT_ALGORITHM=HS256
|
EXTERNAL_PORT=80
|
||||||
JWT_EXPIRE_MINUTES=1440 # 24小时
|
|
||||||
|
|
||||||
# Docker 配置
|
|
||||||
COMPOSE_PROJECT_NAME=notepad
|
|
||||||
|
|
||||||
# 可选:日志级别
|
|
||||||
LOG_LEVEL=info
|
|
||||||
|
|
||||||
# 可选:最大文件大小(字节)
|
|
||||||
MAX_FILE_SIZE=100000
|
|
||||||
|
|
||||||
# 可选:文件名最大长度
|
|
||||||
MAX_FILENAME_LENGTH=200
|
|
||||||
@ -16,15 +16,11 @@ nano .env
|
|||||||
|
|
||||||
**必须修改的配置:**
|
**必须修改的配置:**
|
||||||
- `FILE_LIST_PASSWORD` - 设置强密码(建议使用随机生成的密码)
|
- `FILE_LIST_PASSWORD` - 设置强密码(建议使用随机生成的密码)
|
||||||
- `JWT_SECRET_KEY` - 设置随机密钥(建议使用 32 位以上随机字符串)
|
|
||||||
|
|
||||||
**生成强密码和密钥的方法:**
|
**生成强密码的方法:**
|
||||||
```bash
|
```bash
|
||||||
# 生成密码
|
# 生成密码
|
||||||
openssl rand -base64 32
|
openssl rand -base64 32
|
||||||
|
|
||||||
# 生成 JWT 密钥
|
|
||||||
openssl rand -hex 32
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2. 文件权限设置
|
### 2. 文件权限设置
|
||||||
@ -69,17 +65,14 @@ curl http://localhost/api/health
|
|||||||
|
|
||||||
| 变量名 | 说明 | 默认值 | 是否必须修改 |
|
| 变量名 | 说明 | 默认值 | 是否必须修改 |
|
||||||
|--------|------|--------|------------|
|
|--------|------|--------|------------|
|
||||||
| `FILE_LIST_PASSWORD` | 文件列表访问密码 | admin123 | **是** |
|
| `APP_NAME` | 应用名称 | Vue3 Python Notepad | 否 |
|
||||||
| `JWT_SECRET_KEY` | JWT 签名密钥 | your-secret-key | **是** |
|
| `FILE_LIST_PASSWORD` | 文件列表访问密码 | your_secure_password_here | **是** |
|
||||||
| `NOTES_DIR` | 文件存储目录 | /app/data | 否 |
|
| `EXTERNAL_PORT` | 容器对外暴露的端口 | 80 | 否 |
|
||||||
| `MAX_FILE_SIZE` | 最大文件大小(字节) | 100000 | 否 |
|
|
||||||
| `JWT_EXPIRE_MINUTES` | JWT 过期时间(分钟) | 1440 | 否 |
|
|
||||||
|
|
||||||
## 安全建议
|
## 安全建议
|
||||||
|
|
||||||
1. **定期更换密码**
|
1. **定期更换密码**
|
||||||
- 建议每 3 个月更换一次 `FILE_LIST_PASSWORD`
|
- 建议每 3 个月更换一次 `FILE_LIST_PASSWORD`
|
||||||
- 每年更换一次 `JWT_SECRET_KEY`
|
|
||||||
|
|
||||||
2. **使用 HTTPS**
|
2. **使用 HTTPS**
|
||||||
- 配置反向代理(Nginx/Traefik)
|
- 配置反向代理(Nginx/Traefik)
|
||||||
@ -100,8 +93,8 @@ curl http://localhost/api/health
|
|||||||
- 检查 `.env` 文件中的 `FILE_LIST_PASSWORD`
|
- 检查 `.env` 文件中的 `FILE_LIST_PASSWORD`
|
||||||
- 重启容器:`docker-compose restart backend`
|
- 重启容器:`docker-compose restart backend`
|
||||||
|
|
||||||
2. **JWT 错误**
|
2. **认证错误**
|
||||||
- 检查 `.env` 文件中的 `JWT_SECRET_KEY`
|
- 检查 `.env` 文件中的 `FILE_LIST_PASSWORD`
|
||||||
- 清除浏览器 localStorage 中的 token
|
- 清除浏览器 localStorage 中的 token
|
||||||
|
|
||||||
3. **权限问题**
|
3. **权限问题**
|
||||||
|
|||||||
@ -7,23 +7,21 @@ class Settings(BaseSettings):
|
|||||||
|
|
||||||
# 基础配置
|
# 基础配置
|
||||||
app_name: str = os.getenv("APP_NAME", "Vue3 + Python Notepad")
|
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")
|
file_list_password: str = os.getenv("FILE_LIST_PASSWORD", "admin123")
|
||||||
|
|
||||||
# JWT配置
|
# JWT配置(使用固定值,简化配置)
|
||||||
jwt_secret_key: str = os.getenv("JWT_SECRET_KEY", "your-secret-key-change-this-in-production")
|
jwt_secret_key: str = "default-secret-key-change-in-production"
|
||||||
jwt_algorithm: str = os.getenv("JWT_ALGORITHM", "HS256")
|
jwt_algorithm: str = "HS256"
|
||||||
jwt_expire_minutes: int = int(os.getenv("JWT_EXPIRE_MINUTES", "1440")) # 24小时
|
jwt_expire_minutes: int = 1440 # 24小时
|
||||||
|
|
||||||
# 文件限制
|
# 文件限制(使用固定值,简化配置)
|
||||||
max_file_size: int = int(os.getenv("MAX_FILE_SIZE", "100000")) # 100KB
|
max_file_size: int = 100000 # 100KB
|
||||||
max_filename_length: int = int(os.getenv("MAX_FILENAME_LENGTH", "200"))
|
max_filename_length: int = 200
|
||||||
|
|
||||||
class Config:
|
class Config:
|
||||||
env_file = ".env"
|
env_file = ".env"
|
||||||
|
|||||||
@ -21,7 +21,7 @@ services:
|
|||||||
container_name: notepad-frontend
|
container_name: notepad-frontend
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
ports:
|
ports:
|
||||||
- "80:80"
|
- "${EXTERNAL_PORT:-80}:80"
|
||||||
depends_on:
|
depends_on:
|
||||||
- backend
|
- backend
|
||||||
env_file:
|
env_file:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user