Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

纯新手小白在claude3.5的帮助下,用docker方式搭建成功oneapi,记录下,算是部署one-api教程 #1931

Open
gudaoxongdi opened this issue Nov 17, 2024 · 5 comments
Labels
bug Something isn't working

Comments

@gudaoxongdi
Copy link

我是在甲骨文的免费vps上部署one-api,ubuntu20.04,出站和入站规则都是0.0.0.0/0,所有协议。

1.一开始部署出错。选择了基于docker使用 MySQL 的部署命令,docker run --name one-api -d --restart always -p 3000:3000 -e SQL_DSN="root:123456@tcp(localhost:3306)/oneapi" -e TZ=Asia/Shanghai -v /home/ubuntu/data/one-api:/data justsong/one-api
,部署完成后在浏览器输入ip:3000,不能打开。用docker-compose ps 查看部署状态,还有从/home/ubuntu/data/one-api/logs/日志文件,会得到一些提示:invalid interpolation format for services.one-api.healthcheck.test.[]: "wget -q -O - http://localhost:3000/api/status | grep -o '"success":\s*true' | awk -F: '{print $2}'". You may need to escape any $ with another $,log里还是提示:One API v0.6.10-alpha.6 started ,using MySQL as database , [failed to initialize database: dial tcp [::1]:3306: connect: connection refused] ,询问了chatgpt-4o,按照它的反馈操作并没有成功。

2.改成claude-3.5,在它的提示下部署成功。写个算是教程吧,给像我这样的新手小白看看,当初我自己就没有在网上找到给小白的教程。

确认MySQL是否已安装。可以使用以下命令检查: mysql --version

  • 如果没有安装,可以使用以下命令安装MySQL:
    sudo apt update
    sudo apt install mysql-server

(1)首先,确保MySQL正确安装并运行:

检查MySQL状态

sudo systemctl status mysql

如果没有运行,启动MySQL

sudo systemctl start mysql

确保MySQL在开机时自动启动

sudo systemctl enable mysql

(2)创建数据库和用户:

登录MySQL

sudo mysql -u root -p

在MySQL中执行以下命令

CREATE DATABASE oneapi;
CREATE USER 'oneapi'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON oneapi.* TO 'oneapi'@'%';
FLUSH PRIVILEGES;
#退出MySQL
quit;

(3)配置MySQL允许远程访问:

编辑MySQL配置文件

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

找到bind-address行,修改为:

bind-address = 0.0.0.0

保存后重启MySQL

sudo systemctl restart mysql
(我是用ssh工具打开mysqld.cnf文件,修改后保存)

(4)使用正确的网络配置运行Docker容器:

先删除现有容器

docker rm -f one-api

使用host网络模式运行容器

docker run --name one-api
--network host
-d
--restart always
-e SQL_DSN="oneapi:123456@tcp(127.0.0.1:3306)/oneapi"
-e TZ=Asia/Shanghai
-v /home/ubuntu/data/one-api:/data
justsong/one-api

(5)检查容器日志:

查看容器日志

docker logs -f one-api

3.后续问题处理。

正常的话应该到这一步就可以了,我之前docker容器部署删除搞了好几次,结果提示我3000端口被占用了。

(1)首先,列出所有Docker容器:
docker ps -a

(2)停止所有相关的Docker容器:

停止所有运行中的容器

docker stop $(docker ps -a -q)

删除所有停止的容器

docker rm $(docker ps -a -q)

(3)检查Docker代理进程:

重启Docker服务

sudo systemctl restart docker

再次检查端口

sudo lsof -i :3000

(4)重新运行one-api容器
docker run --name one-api
--network host
-d
--restart always
-e SQL_DSN="oneapi:123456@tcp(127.0.0.1:3306)/oneapi"
-e TZ=Asia/Shanghai
-v /home/ubuntu/data/one-api:/data
justsong/one-api

如果端口仍然被占用,可以尝试使用不同的端口:
docker run --name one-api
-d
--restart always
-p 3001:3000
-e SQL_DSN="oneapi:123456@tcp(127.0.0.1:3306)/oneapi"
-e TZ=Asia/Shanghai
-v /home/ubuntu/data/one-api:/data
justsong/one-api

(5)检查容器日志确认服务是否正常启动:
docker logs -f one-api

4.部署成功。列一些可能会用到的命令。

检查谁在使用3000端口:
sudo lsof -i :3000

或者

sudo netstat -tulpn | grep 3000 (没有安装的话执行 sudo apt install net-tools安装)

检查防火墙设置:
sudo ufw status

如果需要,允许3306端口

sudo ufw allow 3306

@gudaoxongdi gudaoxongdi added the bug Something isn't working label Nov 17, 2024
@Henderson11
Copy link

小白问一下,经过oneapi转发后的claude3.5 api能在国内网络环境下使用么?

@ahasasjeb
Copy link

有没有一种可能,1panel直接一键部署

@yousalian
Copy link

小白问一下,经过oneapi转发后的claude3.5 api能在国内网络环境下使用么?

@Henderson11 可以利用centralx/clash给你的容器套层转发
image

@Henderson11
Copy link

Henderson11 commented Nov 18, 2024 via email

@yousalian
Copy link

@Henderson11
1.新建文件夹 mkdir clash
2.准备你的clash配置文件 上传或新建 命名为config.yaml或修改部署所需要的文件名
3.运行clash容器

docker run --rm 
  --name=clash \
  -p 80:80 \
  -p 7890:7890 \
  -v ./config.yaml:/home/runner/.config/clash/config.yaml \
  centralx/clash:1.18.0

4.终止删除oneapi容器

docker stop one-api
docker rm one-api

5.新建容器

docker run --name one-api -d --restart always \
  -p 30009:3000 \
  -e SQL_DSN="数据库用户名:密码@tcp(数据库ip:3306)/oneapi" \
  -e TZ=Asia/Shanghai \
  -v /home/ubuntu/data/one-api:/data \
  -e http_proxy=http://宿主机局域网ip:7890 \
  -e https_proxy=http://宿主机局域网ip:7890 \
  -e all_proxy=socks://宿主机局域网ip:7890 \
  你的oneapi镜像

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

4 participants