为了让未来能方便地修改代码,从源码构建是最直接的方式。这与使用一键脚本或Docker镜像不同,但整个过程并不复杂。
下面是一份完整的指南,帮你搭建一个可自定义的Sub2API开发环境。
📦 准备工作
1. 基础环境要求
| 依赖项 | 最低版本 | 用途说明 |
|---|---|---|
| Go | 1.21+ | 用于编译后端程序- |
| Node.js | 18+ | 用于构建前端Vue项目- |
| PostgreSQL | 15+ | 作为主要的关系型数据库- |
| Redis | 7+ | 用于缓存和队列管理- |
2. 使用 apt 安装基础软件包
bash
# 安装 Git
sudo apt update
sudo apt install -y git
# 安装和配置 Go (以 1.26.2 为例)
wget https://go.dev/dl/go1.26.2.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.26.2.linux-amd64.tar.gz
# 将 Go 命令加入系统 PATH
export PATH=$PATH:/usr/local/go/bin
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
# 安装 Node.js
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
3. 克隆源码
bash
# 从官方仓库克隆代码
git clone https://github.com/Wei-Shaw/sub2api.git
cd sub2api
🏗️ 源码编译步骤
1. 构建前端静态文件
bash
cd frontend # 进入前端项目目录
npm install # 安装前端依赖
npm run build # 执行构建,生成产物在 dist/ 目录下
2. 构建后端可执行文件
bash
cd ../backend
go build -tags embed -o sub2api ./cmd/server
这个编译有问题,需要用国内的才行,否则下载一直卡主
设置国内代理 (Go Proxy)
这是解决下载慢或卡死问题最直接有效的方法。请在终端依次执行以下命令:go env -w GOPROXY=https://goproxy.cn,direct
-
这个操作是永久的 ,执行一次,以后的所有 Go 项目都会受益。go env -w GOSUMDB=off
-
注意:关闭校验会略微降低安全性,如果你有安全顾虑,可以选择保留校验。关闭后下载会明显更快。
-
确认设置 :可以用
go env命令查看这两个变量是否设置成功。
bash
# 查看 Go 环境变量,确认 GOPROXY 和 GOSUMDB 是否已设置
go env | grep -E 'GOPROXY|GOSUMDB'
🧹 清理缓存并重试 (Clean & Retry)
设置好代理后,需要清除之前卡住的无效缓存,再重新下载。go clean -modcachecd ~/sub2api/backend
go mod download
3. 准备配置文件和数据
为了让程序顺利运行,你需要配置文件(config.yaml)来指定数据库(PostgreSQL 15+-)和缓存服务(Redis 7+-)的地址。建议从官方文档中获取配置模板,并根据你的环境进行修改。
在本地电脑导出镜像:
bash
docker pull postgres:15
docker pull redis:7
docker save -o my_images.tar postgres:15 redis:7
通过 docker load -i my_images.tar 导入了镜像,现在可以直接运行容器了。下面提供完整的启动命令,包含数据持久化、端口映射和自动重启策略。
🐘 启动 PostgreSQL 15 容器
bash
# 创建数据持久化目录(如果还没创建)
mkdir -p ~/docker/postgres/data
# 运行 PostgreSQL 容器
docker run -d \
--name postgres15 \
-e POSTGRES_USER=myuser \
-e POSTGRES_PASSWORD=myStrongPassword \
-e POSTGRES_DB=mydb \
-p 5432:5432 \
-v ~/docker/postgres/data:/var/lib/postgresql/data \
--restart=always \
postgres:15
参数说明:
-
-d:后台运行 -
--name postgres15:容器名称 -
-e:设置环境变量(用户名、密码、默认数据库名,请修改为你的实际值) -
-p 5432:5432:宿主机端口映射到容器端口 -
-v ~/docker/postgres/data:/var/lib/postgresql/data:数据持久化 -
--restart=always:Docker 启动时自动重启容器
⚡ 启动 Redis 7 容器
bash
# 创建数据持久化目录
mkdir -p ~/docker/redis/data
# 运行 Redis 容器(带密码和 AOF 持久化)
docker run -d \
--name redis7 \
-p 6379:6379 \
-v ~/docker/redis/data:/data \
--restart=always \
redis:7 \
redis-server --appendonly yes --requirepass yourRedisPassword
✅ 验证容器运行状态
bash
# 查看运行中的容器
docker ps
# 测试 PostgreSQL 连接
docker exec -it postgres15 psql -U myuser -d mydb
# 输入密码后进入 psql 命令行,输入 \q 退出
# 测试 Redis 连接(如果有密码)
docker exec -it redis7 redis-cli -a yourRedisPassword ping
# 应返回 PONG
# 查看容器日志
docker logs postgres15
docker logs redis7
4. 运行你的服务
创建配置文件
cp ../deploy/config.example.yaml ./config.yaml
主要修改数据库redis等信息
bash
**`config.yaml` 关键配置:**
```yaml
server:
host: "0.0.0.0"
port: 8080
mode: "release"
database:
host: "localhost"
port: 5432
user: "postgres"
password: "your_password"
dbname: "sub2api"
redis:
host: "localhost"
port: 6379
password: ""
jwt:
secret: "change-this-to-a-secure-random-string"
expire_hour: 24
default:
user_concurrency: 5
user_balance: 0
api_key_prefix: "sk-"
rate_multiplier: 1.0
创建好配置文件后,最后一步就是启动服务了:
bash
./sub2api -c config.yaml
服务启动后,即可通过 http://你的服务器IP:8080 访问你的自定义管理面板。

🛠️ 开发时修改代码的实践建议
这里介绍两种高效的开发工作流,你可以根据个人习惯选择。
-
推荐做法:Fork + 本地开发
-
Fork项目 :访问 Sub2API 的 GitHub 仓库,点击右上角的
Fork按钮,将项目复制到你的 GitHub 账号下。 -
克隆你的Fork :将
https://github.com/Wei-Shaw/sub2api.git替换为你自己 Fork 的仓库地址。 -
创建功能分支 :建议在一个独立的分支上进行开发,例如
git checkout -b my-feature,这样主线代码始终保持干净。
-