在ubuntu22.04源码级安装sub2api

为了让未来能方便地修改代码,从源码构建是最直接的方式。这与使用一键脚本或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

  1. 这个操作是永久的 ,执行一次,以后的所有 Go 项目都会受益。go env -w GOSUMDB=off

  2. 注意:关闭校验会略微降低安全性,如果你有安全顾虑,可以选择保留校验。关闭后下载会明显更快。

  3. 确认设置 :可以用 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 + 本地开发

    1. Fork项目 :访问 Sub2API 的 GitHub 仓库,点击右上角的 Fork 按钮,将项目复制到你的 GitHub 账号下。

    2. 克隆你的Fork :将 https://github.com/Wei-Shaw/sub2api.git 替换为你自己 Fork 的仓库地址。

    3. 创建功能分支 :建议在一个独立的分支上进行开发,例如 git checkout -b my-feature,这样主线代码始终保持干净。

相关推荐
多年小白1 小时前
日报 - 2026年4月28日(周二)
网络·人工智能·科技·深度学习·ai
笨蛋©1 小时前
[实战] 制造业数字化:GD&T 形位公差识别与自动化检验计划生成指南
ai·cad·质量管理·制造业·图纸识别
charlie1145141912 小时前
嵌入式Linux驱动开发(7) 从虚拟设备到真实硬件 —— LED驱动硬件基础
linux·开发语言·驱动开发·内核·c
Mortalbreeze2 小时前
软件包管理器yum和编辑器vim详解 —— 附带vim配置链接
linux·服务器
李日灐2 小时前
< 7 > Linux 开发工具:git 版本控制器 和 cgdb/gdb 调试器
linux·运维·服务器·开发语言·git·调试器·gdb/cgdb
xixixi777773 小时前
AI安全周记:AI驱动攻击占比50%、PQC国标落地、ShinyHunters连环袭击——面对1:25的攻防成本鸿沟,防守方还能撑多久?
人工智能·安全·ai·大模型·aigc·量子计算·供应链
青木9603 小时前
前后端开发调试运行技巧
linux·服务器·前端·后端·npm·uv
c++之路3 小时前
C++ 模板
linux·开发语言·c++