2025-08-23 07:30:51 +08:00
2025-08-23 07:30:51 +08:00
2025-08-23 07:30:51 +08:00
2025-08-23 07:30:51 +08:00
2025-08-23 07:30:51 +08:00
2025-08-23 07:30:51 +08:00
2025-08-23 07:30:51 +08:00

CoreStack

项目简介

CoreStack 是一个集成了多种服务组件的基础架构平台,为项目提供核心支持服务,包括数据库、缓存、消息队列和 基础功能 RPC 服务等功能。

服务组件

CoreStack 包含以下核心服务组件:

  • Caddy: HTTP/HTTPS 反向代理服务器提供TLS证书自动管理
  • MySQL: 关系型数据库服务
  • Redis: 内存缓存服务
  • NSQ: 高可用的分布式消息队列系统包含nsqlookupd、nsqd、nsqadmin
  • Connect: 神仙盒 Connect RPC 服务,负责各种基础 RPC 功能(如账户管理)

环境要求

  • Docker 和 Docker Compose

快速开始

1. 克隆项目

git clone https://git.0yue.com/shenxianhe/corestack.git
cd corestack

2. 完成配置文件设置

配置分为两部分:

第一部分:修改配置文件

  1. 复制配置文件示例:
cp config.example.yaml config.yaml
  1. 根据您的实际环境修改 config.yaml 文件中的配置项。

第二部分:域名配置(线上环境) 如果您是在线上环境部署,请修改 ./caddy/Caddyfile 文件,移除所有域名中的 .localhost 后缀。例如:

  • nsqadmin.shenxianhe.cn.localhost 修改为 nsqadmin.shenxianhe.cn
  • connect.shenxianhe.cn.localhost 修改为 connect.shenxianhe.cn

3. 启动服务

使用 Docker Compose 一键启动所有服务:

docker compose up -d

查看服务状态:

docker compose ps

4. 停止服务

docker compose down

MySQL 配置

  • 用户名:root
  • 密码:123456

Caddy 配置

Caddy 配置文件位于 ./caddy/Caddyfile,当前配置了两个域名代理,后续可根据需要自行扩展更多:

  • nsqadmin.shenxianhe.cn.localhost - 代理到 NSQ 管理界面
  • connect.shenxianhe.cn.localhost - 代理到 Connect 服务

site 目录用法

./site 目录用于存放静态网站文件。您可以在该目录下创建多个子目录,每个子目录对应一个独立的静态网站,从而支持多个静态网站共存。

多静态网站配置示例

  1. 首先在 ./site 目录下创建子目录:
mkdir -p ./site/app1 ./site/app2
  1. 将不同网站的静态文件分别放入对应的子目录

  2. ./caddy/Caddyfile 中添加以下配置:

app1.shenxianhe.cn.localhost {
    root * /site/app1
    file_server
}

app2.shenxianhe.cn.localhost {
    root * /site/app2
    file_server
}
  1. 重启Caddy服务后即可通过 https://app1.shenxianhe.cn.localhosthttps://app2.shenxianhe.cn.localhost 分别访问两个静态网站。

访问服务

NSQ 管理界面

访问地址:https://nsqadmin.shenxianhe.cn.localhost

  • 用户名:sky
  • 密码:hiccup

安全提示:使用默认账户密码是不安全的行为,建议部署后立即修改密码。请参考安全注意事项章节。

Connect 服务

访问地址: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

docker compose cp \
 caddy:/data/caddy/pki/authorities/local/root.crt \
 /usr/local/share/ca-certificates/root.crt \
 && sudo update-ca-certificates

macOS

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

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等

docker compose down -v
# 重新启动服务后会自动创建空的数据卷
docker compose up -d

方法二仅删除MySQL数据卷保留其他数据卷

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命令生成密码哈希:
docker run --rm caddy:2.10.0 hash-password -plaintext "your-new-password"
  1. 将生成的哈希值复制下来

  2. 编辑./caddy/Caddyfile文件,替换basic_auth部分的密码哈希:

nsqadmin.shenxianhe.cn {
    basic_auth {
        # 修改为您的用户名和新的密码哈希
        your-username $2a$14$...(生成的哈希值)
    }
    reverse_proxy nsqadmin:4171
}
  1. 重启Caddy服务
docker compose restart caddy

维护与更新

更新服务镜像:

docker compose pull

重新构建并启动服务:

docker compose up -d --build
Description
CoreStack 是一个集成了多种服务组件的基础架构平台,为项目提供核心支持服务,包括数据库、缓存、消息队列和 基础功能 RPC 服务等功能。
Readme 28 KiB
Languages
Caddyfile 100%