143 lines
4.3 KiB
Markdown
143 lines
4.3 KiB
Markdown
# 股票分析系统 (Stock Analysis System)
|
||
|
||
## 简介
|
||
|
||
基于 https://github.com/DR-lin-eng/stock-scanner 二次修改,感谢原作者
|
||
|
||
## 功能变更
|
||
|
||
1. 增加html页面,支持浏览器在线使用
|
||
2. 增加港股、美股支持
|
||
3. 完善Dockerfile、GitHub Actions 支持docker一键部署使用
|
||
4. 支持x86_64 和 ARM64架构镜像
|
||
5. 支持流式输出,支持前端传入Key(仅作为本地用户使用,日志等内容不会输出) 感谢@Cassianvale
|
||
6. 重构为Vue3+Vite+TS+Naive UI,支持响应式布局
|
||
7. 支持GitHub Actions 一键部署
|
||
8. 支持Nginx反向代理,可通过80/443端口访问
|
||
|
||
## Docker镜像一键部署
|
||
|
||
```
|
||
# 拉取最新版本
|
||
docker pull cassianvale/stock-scanner:latest
|
||
|
||
# 启动主应用容器
|
||
docker run -d \
|
||
--name stock-scanner-app \
|
||
--network stock-scanner-network \
|
||
-p 8888:8888 \
|
||
-v "$(pwd)/logs:/app/logs" \
|
||
-v "$(pwd)/data:/app/data" \
|
||
-e API_KEY="你的API密钥" \
|
||
-e API_URL="你的API地址" \
|
||
-e API_MODEL="你的API模型" \
|
||
-e API_TIMEOUT="60" \
|
||
-e LOGIN_PASSWORD="你的登录密码" \
|
||
-e ANNOUNCEMENT_TEXT="你的公告内容" \
|
||
--restart unless-stopped \
|
||
cassianvale/stock-scanner:latest
|
||
|
||
# 运行Nginx容器
|
||
docker run -d \
|
||
--name stock-scanner-nginx \
|
||
--network stock-scanner-network \
|
||
-p 80:80 \
|
||
-p 443:443 \
|
||
-v "$(pwd)/nginx/nginx.conf:/etc/nginx/conf.d/default.conf" \
|
||
-v "$(pwd)/nginx/logs:/var/log/nginx" \
|
||
-v "$(pwd)/nginx/ssl:/etc/nginx/ssl" \
|
||
--restart unless-stopped \
|
||
nginx:stable-alpine
|
||
|
||
针对API_URL处理兼容更多的api地址,规则与Cherry Studio一致, /结尾忽略v1版本,#结尾强制使用输入地址。
|
||
API_URL 处理逻辑说明:
|
||
1. 当 API_URL 以 / 结尾时直接追加 chat/completions,保留原有版本号:
|
||
示例:
|
||
输入: https://ark.cn-beijing.volces.com/api/v3/
|
||
输出: https://ark.cn-beijing.volces.com/api/v3/chat/completions
|
||
2. 当 API_URL 以 # 结尾时强制使用当前链接:
|
||
示例:
|
||
输入: https://ark.cn-beijing.volces.com/api/v3/chat/completions#
|
||
输出: https://ark.cn-beijing.volces.com/api/v3/chat/completions
|
||
3. 当 API_URL 不以 / 结尾时使用默认版本号 v1:
|
||
示例:
|
||
输入: https://ark.cn-beijing.volces.com/api
|
||
输出: https://ark.cn-beijing.volces.com/api/v1/chat/completions
|
||
|
||
|
||
```
|
||
|
||
默认8888端口,部署完成后访问 http://你的域名或ip:8888 即可使用
|
||
|
||
## 使用Nginx反向代理
|
||
|
||
项目已集成Nginx服务,可以通过80端口(HTTP)和443端口(HTTPS)访问应用
|
||
使用docker-compose启动:
|
||
|
||
```shell
|
||
# 克隆仓库
|
||
git clone https://github.com/cassianvale/stock-scanner.git
|
||
cd stock-scanner
|
||
|
||
# 创建.env文件并填写必要的环境变量
|
||
cat > .env << EOL
|
||
API_KEY=你的API密钥
|
||
API_URL=你的API地址
|
||
API_MODEL=你的API模型
|
||
API_TIMEOUT=超时时间(默认60秒)
|
||
LOGIN_PASSWORD=登录密码(可选)
|
||
ANNOUNCEMENT_TEXT=公告文本
|
||
EOL
|
||
|
||
# 创建SSL证书目录
|
||
mkdir -p nginx/ssl
|
||
|
||
# 生成自签名SSL证书(仅用于测试环境)
|
||
openssl req -x509 -nodes -days 365 \
|
||
-newkey rsa:2048 \
|
||
-keyout nginx/ssl/privkey.pem \
|
||
-out nginx/ssl/fullchain.pem \
|
||
-subj "/CN=localhost" \
|
||
-addext "subjectAltName=DNS:localhost,IP:127.0.0.1"
|
||
|
||
# 启动服务
|
||
docker-compose up -d
|
||
```
|
||
|
||
### 使用自己的SSL证书
|
||
|
||
如果您有自己的SSL证书,可以替换自签名证书:
|
||
|
||
1. 将您的证书文件放在 `nginx/ssl/` 目录下
|
||
2. 确保证书文件命名为 `fullchain.pem`,私钥文件命名为 `privkey.pem`
|
||
3. 重启服务: `docker-compose restart nginx`
|
||
|
||
相关参考:[免费泛域名 SSL 证书申请及自动续期(使用 1Panel 面板)](https://bronya-zaychik.cn/archives/GenSSL.html)
|
||
|
||
## Github Actions 部署
|
||
|
||
| 环境变量 | 说明 |
|
||
| --- | --- |
|
||
| DOCKERHUB_USERNAME | Docker Hub用户名 |
|
||
| DOCKERHUB_TOKEN | Docker Hub访问令牌 |
|
||
| SERVER_HOST | 部署服务器地址 |
|
||
| SERVER_USERNAME | 服务器用户名 |
|
||
| SSH_PRIVATE_KEY | SSH私钥 |
|
||
| DEPLOY_PATH | 部署路径 |
|
||
| SLACK_WEBHOOK | Slack通知Webhook(可选) |
|
||
|
||
|
||
## 注意事项 (Notes)
|
||
- 股票分析仅供参考,不构成投资建议
|
||
- 使用前请确保网络连接正常
|
||
- 建议在实盘前充分测试
|
||
|
||
## 贡献 (Contributing)
|
||
欢迎提交 issues 和 pull requests!
|
||
|
||
## 许可证 (License)
|
||
[待添加具体许可证信息]
|
||
|
||
## 免责声明 (Disclaimer)
|
||
本系统仅用于学习和研究目的,投资有风险,入市需谨慎。
|