Files
corestack/README.md
2025-08-23 07:30:51 +08:00

210 lines
5.7 KiB
Markdown
Raw Permalink 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.

# CoreStack
## 项目简介
CoreStack 是一个集成了多种服务组件的基础架构平台,为项目提供核心支持服务,包括数据库、缓存、消息队列和 基础功能 RPC 服务等功能。
## 服务组件
CoreStack 包含以下核心服务组件:
- **Caddy**: HTTP/HTTPS 反向代理服务器提供TLS证书自动管理
- **MySQL**: 关系型数据库服务
- **Redis**: 内存缓存服务
- **NSQ**: 高可用的分布式消息队列系统包含nsqlookupd、nsqd、nsqadmin
- **Connect**: 神仙盒 Connect RPC 服务,负责各种基础 RPC 功能(如账户管理)
## 环境要求
- Docker 和 Docker Compose
## 快速开始
### 1. 克隆项目
```bash
git clone https://git.0yue.com/shenxianhe/corestack.git
cd corestack
```
### 2. 完成配置文件设置
配置分为两部分:
**第一部分:修改配置文件**
1. 复制配置文件示例:
```bash
cp config.example.yaml config.yaml
```
2. 根据您的实际环境修改 `config.yaml` 文件中的配置项。
**第二部分:域名配置(线上环境)**
如果您是在线上环境部署,请修改 `./caddy/Caddyfile` 文件,移除所有域名中的 `.localhost` 后缀。例如:
-`nsqadmin.shenxianhe.cn.localhost` 修改为 `nsqadmin.shenxianhe.cn`
-`connect.shenxianhe.cn.localhost` 修改为 `connect.shenxianhe.cn`
### 3. 启动服务
使用 Docker Compose 一键启动所有服务:
```bash
docker compose up -d
```
查看服务状态:
```bash
docker compose ps
```
### 4. 停止服务
```bash
docker compose down
```
### MySQL 配置
- 用户名:`root`
- 密码:`123456`
### Caddy 配置
Caddy 配置文件位于 `./caddy/Caddyfile`,当前配置了两个域名代理,后续可根据需要自行扩展更多:
- `nsqadmin.shenxianhe.cn.localhost` - 代理到 NSQ 管理界面
- `connect.shenxianhe.cn.localhost` - 代理到 Connect 服务
### site 目录用法
`./site` 目录用于存放静态网站文件。您可以在该目录下创建多个子目录,每个子目录对应一个独立的静态网站,从而支持多个静态网站共存。
**多静态网站配置示例**
1. 首先在 `./site` 目录下创建子目录:
```bash
mkdir -p ./site/app1 ./site/app2
```
2. 将不同网站的静态文件分别放入对应的子目录
3.`./caddy/Caddyfile` 中添加以下配置:
```
app1.shenxianhe.cn.localhost {
root * /site/app1
file_server
}
app2.shenxianhe.cn.localhost {
root * /site/app2
file_server
}
```
4. 重启Caddy服务后即可通过 `https://app1.shenxianhe.cn.localhost``https://app2.shenxianhe.cn.localhost` 分别访问两个静态网站。
## 访问服务
### NSQ 管理界面
访问地址:[https://nsqadmin.shenxianhe.cn.localhost](https://nsqadmin.shenxianhe.cn.localhost)
- 用户名:`sky`
- 密码:`hiccup`
> **安全提示**:使用默认账户密码是不安全的行为,建议部署后立即修改密码。请参考[安全注意事项](#安全注意事项)章节。
### Connect 服务
访问地址:[https://connect.shenxianhe.cn.localhost](https://connect.shenxianhe.cn.localhost)
> 注意:
> - 如果是本地部署,请将域名添加到 `/etc/hosts` 文件中,格式为 `127.0.0.1 域名`(例如 `127.0.0.1 nsqadmin.shenxianhe.cn.localhost`
## HTTPS 证书配置
当使用 Docker 进行本地开发并启用 HTTPS 时Caddy 会使用本地 CA 颁发证书。外部 HTTP 客户端默认不会信任这些证书。要解决这个问题,您可以在主机的信任存储中安装 Caddy 的根 CA 证书:
### Linux
```bash
docker compose cp \
caddy:/data/caddy/pki/authorities/local/root.crt \
/usr/local/share/ca-certificates/root.crt \
&& sudo update-ca-certificates
```
### macOS
```bash
docker compose cp \
caddy:/data/caddy/pki/authorities/local/root.crt \
/tmp/root.crt \
&& sudo security add-trusted-cert -d -r trustRoot \
-k /Library/Keychains/System.keychain /tmp/root.crt
```
### Windows
```bash
docker compose cp \
caddy:/data/caddy/pki/authorities/local/root.crt \
%TEMP%/root.crt \
&& certutil -addstore -f "ROOT" %TEMP%/root.crt
```
## 常见问题
### 服务启动失败
如果服务启动失败,请检查:
1. Docker 是否正常运行
2. 端口是否被占用
3. 查看日志获取详细错误信息:`docker compose logs <服务名称>`
### 如何重置 MySQL 数据
**警告:此操作会永久删除所有数据库数据,请谨慎操作!**
方法一:使用 -v 参数删除所有数据卷包括MySQL、Caddy等
```bash
docker compose down -v
# 重新启动服务后会自动创建空的数据卷
docker compose up -d
```
方法二仅删除MySQL数据卷保留其他数据卷
```bash
docker compose down
# 列出所有数据卷找到MySQL数据卷名称通常为 corestack_mysql
docker volume ls
# 删除MySQL数据卷
docker volume rm corestack_mysql
# 重新启动服务后会自动创建空的MySQL数据卷
docker compose up -d
```
## 安全注意事项
### 修改NSQ管理界面的默认密码
当前Caddyfile中配置了NSQ管理界面的默认用户名和密码这在生产环境中是不安全的。请按照以下步骤修改密码
1. 使用Caddy提供的`hash-password`命令生成密码哈希:
```bash
docker run --rm caddy:2.10.0 hash-password -plaintext "your-new-password"
```
2. 将生成的哈希值复制下来
3. 编辑`./caddy/Caddyfile`文件,替换`basic_auth`部分的密码哈希:
```
nsqadmin.shenxianhe.cn {
basic_auth {
# 修改为您的用户名和新的密码哈希
your-username $2a$14$...(生成的哈希值)
}
reverse_proxy nsqadmin:4171
}
```
4. 重启Caddy服务
```bash
docker compose restart caddy
```
## 维护与更新
更新服务镜像:
```bash
docker compose pull
```
重新构建并启动服务:
```bash
docker compose up -d --build
```