-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.env.example
More file actions
145 lines (134 loc) · 7.45 KB
/
Copy path.env.example
File metadata and controls
145 lines (134 loc) · 7.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
# ============================================================================
# RainMail 配置文件
# ============================================================================
# 复制此文件为 .env 并填入实际值
# .env 文件已由 .gitignore 忽略,不会被提交
# ============================================================================
# ----------------------------------------------------------------------------
# 应用配置
# ----------------------------------------------------------------------------
# 会话密钥(用于加密签名 cookie 会话,请使用随机字符串,可通过 openssl rand -hex 32 生成)
SECRET_KEY=your-secret-key-here
# ----------------------------------------------------------------------------
# 邮件配置
# ----------------------------------------------------------------------------
# SMTP服务器地址(例如:smtp.gmail.com, smtp.qq.com, smtp.office365.com)
MAIL_SERVER=smtp.gmail.com
# SMTP端口(587=TLS, 465=SSL)
MAIL_PORT=587
# 使用TLS加密(通常端口587使用TLS)
MAIL_USE_TLS=true
# 使用SSL加密(通常端口465使用SSL,与TLS互斥)
MAIL_USE_SSL=false
# SMTP登录用户名(通常是邮箱地址)
MAIL_USERNAME=your-email@gmail.com
# SMTP登录密码(Gmail需使用应用专用密码,不是账号密码)
MAIL_PASSWORD=your-app-password
# 默认发件人地址和名称
MAIL_DEFAULT_SENDER=RainMail <noreply@rainmail.dev>
# 是否启用邮件功能(设为false可禁用邮件发送)
MAIL_ENABLED=true
# ----------------------------------------------------------------------------
# 邮箱验证配置
# ----------------------------------------------------------------------------
# 验证有效期(分钟)
VERIFY_DURATION_MINUTES=15
# ----------------------------------------------------------------------------
# 和风天气 API 配置
# ----------------------------------------------------------------------------
# 可配置多组API作为备份,格式:HEFENG_HOST{N} 和 HEFENG_KEY{N}
# 至少配置一组,系统会自动轮询使用
HEFENG_HOST1=your-hefeng-host1
HEFENG_KEY1=your-api-key1
# 备用API配置(可选)
HEFENG_HOST2=
HEFENG_KEY2=
HEFENG_HOST3=
HEFENG_KEY3=
HEFENG_HOST4=
HEFENG_KEY4=
# ----------------------------------------------------------------------------
# 位置配置
# ----------------------------------------------------------------------------
# 城市ID(可在和风天气API查询,101280101=广州)
LOCATION_ID=101280101
# 城市名称(用于显示)
LOCATION_NAME=广州
# ----------------------------------------------------------------------------
# 管理员配置
# ----------------------------------------------------------------------------
# 管理员路径前缀(默认为 admin,建议修改为不易猜测的字符串)
# 示例:ADMIN_PATH_PREFIX=secure-admin 或 ADMIN_PATH_PREFIX=backend2024
ADMIN_PATH_PREFIX=admin
# 管理员用户名
ADMIN_USERNAME=admin
# 管理员密码(必须是哈希格式,不能是明文!)
# 生成哈希方法:npm run gen-hash your-password
# 将生成的哈希值粘贴到这里(哈希格式与 Werkzeug 兼容:scrypt:N:r:p$salt$hash)
ADMIN_PASSWORD=your-scrypt-hash-here
# ----------------------------------------------------------------------------
# AI 内容审核配置
# ----------------------------------------------------------------------------
# AI服务API密钥(用于内容审核,可选)
AI_MODERATION_API_KEY=your-ai-api-key
# AI服务基础URL
AI_MODERATION_BASE_URL=https://integrate.api.nvidia.com/v1
# AI模型名称
AI_MODERATION_MODEL=deepseek-ai/deepseek-r1-distill-llama-8b
# AI系统提示词(定义审核规则)
AI_MODERATION_SYSTEM_PROMPT=你是一个内容安全审核助手。请判断用户输入是否包含以下内容:\n1. 违法、暴力、色情内容\n2. 垃圾广告或恶意链接\n3. 政治敏感或极端言论\n4. 人身攻击或歧视性言论\n\n请严格按照以下 JSON 格式回复,不要添加任何其他文字:\n{"decision": "REJECT"} 表示内容不安全,应该拦截\n{"decision": "PASS"} 表示内容安全,可以通过
# AI 服务提供商每分钟最大请求数(RPM,审核队列据此限速,保证上游不超限)
AI_MODERATION_RPM=60
# AI 审核失败(网络/超时)时的最大重试次数,耗尽后标记 rejected(隐藏)
AI_MODERATION_MAX_RETRIES=3
# 审核队列轮询周期(毫秒),每周期按 RPM 配额取若干条 pending 进行审核
AI_MODERATION_QUEUE_INTERVAL_MS=2000
# ----------------------------------------------------------------------------
# 邮件模板
# ----------------------------------------------------------------------------
EMAIL_VERIFY_SUBJECT=验证你的 RainMail 邮箱
EMAIL_NEW_LETTER_SUBJECT=📮 远方有一封信正在等你
EMAIL_UNLOCKED_SUBJECT=🌧️ 雨来了,信已解锁
EMAIL_TEST_SUBJECT=雨天信箱 - 邮件配置测试
EMAIL_TEST_BODY=这是一封测试邮件,如果您收到此邮件,说明邮件配置正确。\n\n雨天信箱系统
# ----------------------------------------------------------------------------
# 应用通知模板
# ----------------------------------------------------------------------------
NOTIFICATION_LETTER_UNLOCKED_TITLE=🌧️ 信件已解锁
NOTIFICATION_LETTER_UNLOCKED_CONTENT=雨天已至,你有一封来自远方的信已解锁,快去查看吧!
# ----------------------------------------------------------------------------
# 应用配置
# ----------------------------------------------------------------------------
APP_NAME=RainMail
APP_NAME_CN=雨天信箱
APP_URL=https://rm.techccy.com
# ----------------------------------------------------------------------------
# 其他配置
# ----------------------------------------------------------------------------
# 天气缓存时间(秒)
TIMES=3600
# 强制降雨持续时间(分钟)
FORCE_RAIN_DURATION=10
# 私密投递是否需要登录(true/false)
PRIVATE_DELIVERY_REQUIRE_LOGIN=false
# IPInfo.io 访问令牌(用于获取用户位置信息,可选)
IPINFO_TOKEN=your-ipinfo-token
# MaxMind 离线库路径(GeoLite2-City.mmdb,用于 IP 城市查询的主数据源,可选)
# 缺省为 data/GeoLite2-City.mmdb;放入文件即启用离线查询。
# 未提供时自动回退到 ipip.net + 腾讯在线接口兜底。
# 文件需从 MaxMind 官网(注册免费账号 + License Key)下载。
MAXMIND_DB_PATH=
# 腾讯位置服务 IP 查询 Key(IP 定位主数据源,配额每天 6000 次/Key)
# 文档:https://lbs.qq.com/service/webService/webServiceGuide/position/webServiceIp
# 申请:https://lbs.qq.com/dev/console/key/manage
# 支持填入多个 Key,用英文逗号分隔以叠加每日配额并自动轮询。
#
# Key 若在控制台开启了 "SN 签名校验",需用 key:sk 格式填入对应的 SK(Secret Key):
# TENCENT_IP_KEYS=ABCD-带签名的Key:对应的SK,EFGH-未开启签名的Key
# 多个 Key 混填即可,未开启 SN 校验的 Key 直接写 key 即可。
# 留空时自动降级到 MaxMind 离线库 → ipip.net → LOCATION_NAME
TENCENT_IP_KEYS=
# Session Cookie 是否仅通过HTTPS传输(生产环境建议设为true)
SESSION_COOKIE_SECURE=false
# 内容安全策略(CSP),控制可加载的外部资源
CSP_POLICY=default-src 'self'; script-src 'self' https://static.cloudflareinsights.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; connect-src 'self' https://static.cloudflareinsights.com; font-src 'self'; frame-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none';