GeekAI 用户手册GeekAI 用户手册
  • 指南

    • 介绍
    • 快速部署
    • 进阶部署
  • 配置

    • AI 绘图配置
    • 音乐和视频
    • 文件存储配置
  • 升级

    • 平滑升级
  • 开发

    • 开发和构建
    • 如何跳过 License 验证
  • 指南

    • 介绍
    • 部署
  • 配置

    • Coze 智能体
    • Dify 智能体
    • 阿里云百炼智能体
  • 升级

    • Geek-Agent v1.0.2
    • Geek-Agent v1.0.3
  • GeekAI-PLUS(不带管理后台)
  • GeekAI-PLUS(带管理后台)
  • GeekAI-Agent(不带管理后台)
  • AI 学习笔记

    • 01-Stable-Diffusion基本知识概论
    • 02-DeepSeek R1 的核心技术解密
    • 03-DeepSeek R1 使用指南(持续更新)
    • 03-关于 AI Agent 的一些个人思考
    • 04-搞懂 MCP 和 A2A 协议
  • 极客学长博客
  • 技术交流群
  • GitHub
  • Gitee
  • GitCode
  • 简体中文
  • en-US
GitHub
  • 指南

    • 介绍
    • 快速部署
    • 进阶部署
  • 配置

    • AI 绘图配置
    • 音乐和视频
    • 文件存储配置
  • 升级

    • 平滑升级
  • 开发

    • 开发和构建
    • 如何跳过 License 验证
  • 指南

    • 介绍
    • 部署
  • 配置

    • Coze 智能体
    • Dify 智能体
    • 阿里云百炼智能体
  • 升级

    • Geek-Agent v1.0.2
    • Geek-Agent v1.0.3
  • GeekAI-PLUS(不带管理后台)
  • GeekAI-PLUS(带管理后台)
  • GeekAI-Agent(不带管理后台)
  • AI 学习笔记

    • 01-Stable-Diffusion基本知识概论
    • 02-DeepSeek R1 的核心技术解密
    • 03-DeepSeek R1 使用指南(持续更新)
    • 03-关于 AI Agent 的一些个人思考
    • 04-搞懂 MCP 和 A2A 协议
  • 极客学长博客
  • 技术交流群
  • GitHub
  • Gitee
  • GitCode
  • 简体中文
  • en-US
GitHub
  • GeekAI-Plus

    • 介绍
    • 快速部署
    • 进阶部署
    • Window 系统部署
    • 使用宝塔部署
    • 常见错误
  • 配置

    • API令牌配置
    • AI 绘图配置
    • 音乐和视频
    • 文件存储配置
    • 支付配置
    • Gitee AI API 接口接入指南
    • 其他服务配置
    • 运营策略
  • 升级

    • 平滑升级
    • GeekAI-PLUS-v4.1.6
    • GeekAI-PLUS-v4.1.8
    • GeekAI-PLUS-v4.1.9
    • GeekAI-PLUS-v4.2.1
    • GeekAI-PLUS-v4.2.2
    • GeekAI-PLUS-v4.2.3
    • GeekAI-PLUS-v4.2.4
  • 开发

    • 开发和构建
    • 如何跳过 License 验证

本地开发环境

请确保你的本地开发环境满足以下要求:

  • Golang v1.21+
  • Node v18.20+

项目基本架构

GeekAI 是一个基于 Go 和 Vue 开发的,后端 API Web 框架是基于 Gin 二次开发的,前端是基于 Element-Plus + Vant(移动端) 开发的。

项目目录结构

├── api # 后端 API 程序
│   ├── bin # 编译后的二进制文件
│   ├── core # 服务核心代码
│   ├── handler # 处理器
│   ├── logger # 日志
│   ├── logs # 日志目录
│   ├── res # 资源文件
│   ├── service # 服务
│   ├── static # 静态文件
│   ├── store # 存储相关代码,如 redis,mysql,leveldb 等
│   └── utils # 工具函数
├── build # 打包脚本相关
├── database # 数据库 SQL file
├── desktop # 桌面套壳应用打包,基于 electron
├── docker # docker 部署相关,docker-compose.yaml 文件
│   ├── conf # 配置文件
│   └── data # 数据文件
└── web # 前端应用
    ├── dist # 编译后的文件
    ├── public # 静态文件
    └── src # 前端源码
      ├── assets # 静态资源
      ├── components # 组件
      ├── lib # 库
      ├── store # 状态管理,session,本地数据存储
      ├── utils # 工具函数
      └── views # 视图文件

后端启动

第一步,把项目克隆下来:

# 如果你还没有安装 git,可以先安装一下
brew install git # mac 系统
yum install git # centos 系统
apt install git # ubuntu 系统

# 克隆项目
git clone https://github.com/yangjian102621/geekai.git
cd geekai/api

第二步,创建配置文档。我们为你提供了一份样例配置文件,你只需拷贝 config.sample.toml

cp config.example.toml config.toml

接下来,你需要修改你的 MySQL 和 redis 的连接信息。

第三步,运行 Go 程序:

go run main.go

如果发现依赖下载超时,或者失败,类似错误信息如下:

依赖下载超时

那么可以尝试使用国内镜像,有两种设置方式。

第一种:直接导出环境变量

export GOPROXY=https://goproxy.cn,direct

第二种,通过 go env 设置编译环境变量

go env -w GOPROXY=https://goproxy.cn,direct

如果你想启用热部署,即每次修改自动重启 API 服务的话,可以使用 fresh 这个工具。

首先,安装 fresh:

go get github.com/pilu/fresh
# 如果没有安装成功可以试下下面的命令
go install github.com/pilu/fresh@latest

然后就使用 fresh 来实现 Golang 应用的热加载了(照样在 api 目录执行):

fresh -c fresh.conf

API 服务的默认地址是 http://localhost:5678

运行前端

首先,你需要安装依赖库:

cd web
# 安装依赖
npm install
# 如果慢的话,你可以使用 cnpm 或者 pnpm
npm install -g cnpm
cnpm install

安装成功依赖之后,启动前端服务:

npm run dev

启动成功之后访问 http://localhost:8888 预览效果

镜像打包

当产品开发完成准备在生产环境部署的时候,我们推荐你将运行程序和环境打包成 docker 镜像,使用 docker 来运行 GeekAI 应用。

视频教程:

如果您比较喜欢通过视频来学习的话,请直接观看B站视频 GeekAI SD 配置和升级二次开发教程。

1、打包 API 应用:

# 先编译
cd api
make clean amd64
#  再打包
cd ../build
docker build -t geekai-api:$version -f dockerfile-api-go ../

记得把上面的 $version 变量替换成你要打包的版本号,如 v3.2.2

2、打包前端应用

cd web
# 安装依赖
npm install
# 编译
npm run build
# 打包
cd ../build
docker build -t geekai-web:$version -f dockerfile-vue ../

3、将打包的镜像导出,然后在线上导入

# 导出镜像
docker save geekai-api:$version > geekai-api.tar
docker save geekai-web:$version > geekai-web.tar
# 拷贝到线上服务器
scp geekai-api.tar geekai-web.tar root@xxx.xxx.xxx.xxx:/opt
# 然后登录线上服务器
ssh root@xxx.xxx.xxx.xxx
cd /opt
# 导入镜像
docker load < geekai-api.tar
docker load < geekai-web.tar

推送到镜像仓库

如果你觉得每次像上面那样编译,打包,拷贝,导入太过繁琐麻烦,一个比较省事的方案是:直接在本地将镜像推送到自己的镜像服务器,然后在服务端直接拉取下来即可。

我们已经为你准备好了一键编译,打包,推送脚本,在 build/build.sh。 你需要修改几处内容(主要就是把 registry.cn-shenzhen.aliyuncs.com/geekmaster 改成你自镜像仓库的地址):

#!/bin/bash

version=$1
arch=${2:-amd64}

# build go api program
cd ../api
make clean $arch

# build web app
cd ../web
npm run build

cd ../build

# 这里需要把 registry.cn-shenzhen.aliyuncs.com/geekmaster 改成你的镜像仓库的地址,下面相同
docker rmi -f registry.cn-shenzhen.aliyuncs.com/geekmaster/geekai-api:$version-$arch
# build docker image for geekai-go
docker build -t registry.cn-shenzhen.aliyuncs.com/geekmaster/geekai-api:$version-$arch -f dockerfile-api-go ../

# build docker image for geekai-web
docker rmi -f registry.cn-shenzhen.aliyuncs.com/geekmaster/geekai-web:$version-$arch
docker build --platform linux/amd64 -t registry.cn-shenzhen.aliyuncs.com/geekmaster/geekai-api-web:$version-$arch -f dockerfile-vue ../

if [ "$3" = "push" ];then
  docker push registry.cn-shenzhen.aliyuncs.com/geekmaster/geekai-api:$version-$arch
  docker push registry.cn-shenzhen.aliyuncs.com/geekmaster/geekai-web:$version-$arch
fi

改好之后,你先登录你的 docker 镜像仓库:

docker login --username={你的用户名} {你的镜像仓库服务器地址,如:registry.cn-shenzhen.aliyuncs.com}

准备好了之后,就可以一键编译,打包,推送镜像了:

# v4.0.9 是指版本
# amd64 是你的服务系统架构,可选项: amd64,arm64
# push 是否推送到服务器,如果你只想在本地测试你的镜像,就不传入这个参数
 ./build.sh v4.0.9 amd64 push

推送成功之后,你就可以在线上拉取你自己打包的镜像了。直接修改 docker-compose.yaml 文件,把 registry.cn-shenzhen.aliyuncs.com/geekmaster 改成你的 docker 镜像仓库地址,然后把v4.0.7改成你本次打包的版本,其他保持不变。

# 后端 API 程序
geekai-api:
  image: registry.cn-shenzhen.aliyuncs.com/geekmaster/geekai-api:v4.0.7-amd64
  container_name: geekai-api
  restart: always
  depends_on:
    - geekai-mysql
    - geekai-redis
  environment:
    - DEBUG=false
    - LOG_LEVEL=info
    - CONFIG_FILE=config.toml
  ports:
    - '5678:5678'
    - '9999:9999'
  volumes:
    - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
    - ./conf/config.toml:/var/www/app/config.toml
    - ./logs/app:/var/www/app/logs
    - ./static:/var/www/app/static
    - ./data/leveldb:/var/www/app/data

# 前端应用
geekai-web:
  image: registry.cn-shenzhen.aliyuncs.com/geekmaster/geekai-web:v4.0.7-amd64
  container_name: geekai-web
  restart: always
  depends_on:
    - geekai-api
  ports:
    - '8080:8080'
  volumes:
    - ./logs/nginx:/var/log/nginx
    - ./conf/nginx/conf.d:/etc/nginx/conf.d
    - ./conf/nginx/nginx.conf:/etc/nginx/nginx.conf
    - ./conf/nginx/ssl:/etc/nginx/ssl

改完之后重启容器,打完,收工 🎉🎉🎉

API 文档

GeekAI 提供了详细的 API 文档,你可以在 https://geekai.apifox.cn 找到。文档会随着功能的变化同步更新。

在 GitHub 上编辑此页
上次更新: 2025/6/26 21:13
贡献者: RockYang, GeekMaster
Next
如何跳过 License 验证
极客学长 © 2022-2025 版权所有 粤ICP备19122051号-1