Skip to content

Deployment

MartialBE edited this page Dec 1, 2024 · 4 revisions

部署

USER_TOKEN_SECRET 必填,否则无法启动。 SESSION_SECRET 推荐填写,否则每次重启后已登录用户的 cookie 将失效。

Docker 部署

以下是使用 Docker 进行部署的命令:

使用 SQLite

docker run -d -p 3000:3000 \
  --name one-api \
  --restart always \
  -e TZ=Asia/Shanghai \
  -e USER_TOKEN_SECRET="user_token_secret" \
  -e SESSION_SECRET="session_secret" \
  -v /home/ubuntu/data/one-api:/data \
  ghcr.io/martialbe/one-api

使用 MySQL

在 SQLite 的基础上,添加 -e SQL_DSN="root:123456@tcp(localhost:3306)/oneapi"。请根据实际情况修改数据库连接参数。

docker run -d -p 3000:3000 \
  --name one-api \
  --restart always \
  -e TZ=Asia/Shanghai \
  -e USER_TOKEN_SECRET="user_token_secret" \
  -e SESSION_SECRET="session_secret" \
  -e SQL_DSN="root:123456@tcp(localhost:3306)/oneapi" \
  -v /home/ubuntu/data/one-api:/data \
  ghcr.io/martialbe/one-api

使用 PostgreSQL

docker run -d -p 3000:3000 \
  --name one-api \
  --restart always \
  -e TZ=Asia/Shanghai \
  -e USER_TOKEN_SECRET="user_token_secret" \
  -e SESSION_SECRET="session_secret" \
  -e SQL_DSN="postgres://postgres:123456@localhost:5432/oneapi" \
  -v /home/ubuntu/data/one-api:/data \
  ghcr.io/martialbe/one-api

注意:

  • -p 3000:3000 中的第一个 3000 是宿主机的端口,可以根据需要进行修改。
  • 数据和日志将会保存在宿主机的 /home/ubuntu/data/one-api 目录,请确保该目录存在且具有写入权限,或者更改为合适的目录。
  • 如果启动失败,请添加 --privileged=true,具体参考 issue #482
  • 如果你的并发量较大,务必设置 SQL_DSN

部署完毕后,访问 http://localhost:3000 即可。

使用 Docker Compose 进行部署

注意:虽然启动方式有所不同,但参数设置保持不变。具体的参数设置请参考基于 Docker 部署部分。

以下是使用 Docker Compose 进行部署的步骤:

  1. 请在你本机创建一个目录用于存放数据,例如/home/ubuntu/data/one-api, 注意:以下操作都是基于你处于/home/ubuntu/data/one-api目录下进行的。如果你的目录不是/home/ubuntu/data/one-api,请自行进入到你的目录。

  2. 在你的本地目录下创建 ./data/mysql 文件 和 ./data/one-api 文件, 也在你本地目录下执行以下命令:

mkdir -p ./data/mysql
mkdir -p ./data/one-api
  1. 下载 docker-compose.yml 文件到你的本地目录 (上面的列子是:/home/ubuntu/data/one-api)。

  2. 修改 docker-compose.yml 文件,将你需要的环境变量填入。 如果你想使用配置文件,可以下载配置文件,并重命名为config.yaml 放入 ./data/one-api 目录中。

  3. 启动服务

docker-compose up -d
  1. 启动服务后,你可以通过运行以下命令来查看部署状态:
docker-compose ps

请确保所有的服务都已经成功启动,并且状态为 'Up'。

手动部署

以下是手动部署的步骤:

  1. 获取源码:从 GitHub Releases 下载最新的可执行文件,或者直接从源码编译。如果你选择编译源码,可以使用以下命令:

    git clone https://github.com/MartialBE/one-api.git
  2. 构建:进入代码目录,构建:

    cd one-api
    make
  3. 运行应用:为构建的应用添加执行权限,并运行:

    chmod u+x one-api
    ./one-api --port 3000 --log-dir ./logs
  4. 访问应用:在浏览器中访问 http://localhost:3000/ 并登录。初始账号用户名为 root,密码为 123456

  5. 重新编译:如果需要重新编译,可以使用以下命令:

    make clean
    make

请确保在执行以上步骤时,你的环境已经安装了必要的工具,如 Git、Node.js、yarn 和 Go。

多机部署

  1. 所有服务器 SESSION_SECRET 设置一样的值。
  2. 必须设置 SQL_DSN,使用 MySQL 数据库而非 SQLite,所有服务器连接同一个数据库。
  3. 所有从服务器必须设置 NODE_TYPEslave,不设置则默认为主服务器。
  4. 设置 SYNC_FREQUENCY 后服务器将定期从数据库同步配置,在使用远程数据库的情况下,推荐设置该项并启用 Redis,无论主从。
  5. 从服务器可以选择设置 FRONTEND_BASE_URL,以重定向页面请求到主服务器。
  6. 从服务器上分别装好 Redis,设置好 REDIS_CONN_STRING,这样可以做到在缓存未过期的情况下数据库零访问,可以减少延迟。
  7. 如果主服务器访问数据库延迟也比较高,则也需要启用 Redis,并设置 SYNC_FREQUENCY,以定期从数据库同步配置。

环境变量的具体使用方法详见环境变量