Files
Snap.Server/README.md
wangdage12 3d2a620820 Update README with API and server details
Added information about API services, server infrastructure, and usage recommendations for metadata repositories.
2026-02-12 23:26:24 +08:00

149 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Snap.Server
Snap.Hutao新后端API
## 部署方法
> **资源和环境要求**
> 服务器硬件:
> 最低1核CPU1GB内存
>
> 运行环境:
> `Windows10`及以上、`Windows Server 2019`及以上、`Linux`
> `Python3.12`及以上
> `MongoDB`
### 在服务器生成RSA密钥
执行以下代码在根目录生成密钥:
```python
from Crypto.PublicKey import RSA
# 生成 2048 位 RSA 密钥对
key = RSA.generate(2048)
private_key = key.export_key()
public_key = key.publickey().export_key()
with open("private.pem", "wb") as f:
f.write(private_key)
with open("public.pem", "wb") as f:
f.write(public_key)
print("Keys generated.")
```
**确保客户端的公钥和生成的相同,否则将无法使用账户功能**
### 创建配置文件
创建`config.json`文件,示例内容如下:
```json
{
"SECRET_KEY": "jwt_secret_key",
"MONGO_URI": "mongodb+srv://wdgwdg889_db_user:xxxxxx@cluster0.eplrcvl.mongodb.net/?appName=Cluster0",
"TIMEZONE": "Asia/Shanghai",
"ISTEST_MODE": false,
"SERVER": {
"HOST": "0.0.0.0",
"PORT": 5222,
"DEBUG": false
},
"JWT": {
"ALGORITHM": "HS256",
"EXPIRATION_HOURS": 24
},
"EMAIL": {
"GMAIL_USER": "wdgwdg889@gmail.com",
"APP_PASSWORD": "",
"APP_NAME": "WDG Snap Hutao",
"OFFICIAL_WEBSITE": "https://htserver.wdg.cloudns.ch/",
"SUBJECT": "WDG Snap Hutao 验证码"
},
"RSA": {
"PRIVATE_KEY_FILE": "private.pem",
"PUBLIC_KEY_FILE": "public.pem"
},
"VERIFICATION_CODE": {
"EXPIRE_MINUTES": 10
},
"LOGGING": {
"LEVEL": "DEBUG",
"FORMAT": ""
}
}
```
参数说明:
| 参数 | 说明 |
|------|------|
| SECRET_KEY | 用于JWT签名的密钥请设置为复杂字符串 |
| MONGO_URI | MongoDB连接字符串 |
| TIMEZONE | 服务器时区 |
| ISTEST_MODE | 是否启用测试模式,测试模式下部分功能将返回默认值,不连接数据库 |
| SERVER.HOST | 服务器监听地址 |
| SERVER.PORT | 服务器监听端口 |
| SERVER.DEBUG | 是否启用Flask的调试模式 |
| JWT.ALGORITHM | JWT签名算法 |
| JWT.EXPIRATION_HOURS | JWT过期时间小时 |
| EMAIL.GMAIL_USER | 用于发送验证邮件的Gmail账号 |
| EMAIL.APP_PASSWORD | Gmail应用专用密码 |
| EMAIL.APP_NAME | 应用名称,用于邮件显示 |
| EMAIL.OFFICIAL_WEBSITE | 官方网站地址,用于邮件中的链接 |
| EMAIL.SUBJECT | 验证邮件的主题 |
| RSA.PRIVATE_KEY_FILE | RSA私钥文件路径 |
| RSA.PUBLIC_KEY_FILE | RSA公钥文件路径 |
| VERIFICATION_CODE.EXPIRE_MINUTES | 验证码过期时间(分钟) |
| LOGGING.LEVEL | 日志记录级别生产环境建议设置为INFO |
| LOGGING.FORMAT | 日志记录格式 |
### 开发环境启动方法
确保已安装依赖:
```
pip install -r requirements.txt
```
运行Flask应用
```
python app.py
```
### 生产环境启动方法
建议使用Gunicorn部署
```
pip install -r requirements.txt && python -m gunicorn run:app --bind 0.0.0.0:5222 --workers 4 --threads 2 --access-logfile - --error-logfile -
```
请根据服务器性能调整`--workers``--threads`参数。
### API文档和官方开放平台
**API文档可以在该地址访问**
https://rdgm3wrj7r.apifox.cn/
> 项目官方API和文件资源服务、仓库镜像为各开源项目免费提供
本项目官方API地址https://htserver.wdg.cloudns.ch/api/
<img width="901" height="522" alt="服务拓补结构" src="https://github.com/user-attachments/assets/9cd2f0d5-372e-46b6-b64b-643df661b445" />
我们的项目官方服务采用多台服务器,其中日本的主服务器用来提供所有基础服务,甘肃的自建服务器提供加速和负载均衡,以确保服务稳定
元数据仓库镜像可以随时调用获取元数据仓库API`/git-repository/all`得到
由于Git仓库几乎无法被CDN缓存频繁拉取镜像仓库会对服务器造成压力请各位在使用量较大的情况下自建仓库镜像
甘肃服务器只能使用ipv6访问同时比较不稳定只能用于加速不要将它直接作为主要服务使用
甘肃服务器2为备用服务器计划在用户量较大时作为API以负载均衡的方式提供不在极端情况下不采用和仓库镜像使用
### 注意事项
在轻量使用的场景下可以直接使用MongoDB Atlas的免费套餐但在高并发场景下建议使用自建MongoDB服务器以获得更好的性能和稳定性。
新MongoDB数据库会在写入数据时自动创建无需手动创建数据库和集合。