计划在Linux环境下部署一个deepseek,并且使用open-webui界面进行文字交流。
部署方案:使用开源的ollama做底座,再将deepseek的蒸馏模型部署到ollama中,随后使用docker运行openwebui,并且连接到ollama内部服务以便获取模型信息以及进行文字交流。
部署ollama
ollama官网:https://ollama.com/
Linux下可以直接使用curl -fsSL https://ollama.com/install.sh | sh
命令下载安装ollama。
下载有点耗时,我们也可以到ollama的github官网(GitHub - ollama/ollama)直接下载离线包:通过Releases下载对应芯片、系统的离线包,比如ollama-linux-amd64.tgz
将离线包ollama-linux-amd64.tgz上传到Linux的/data目录下,解压到usr/bin目录:
mkdir /data
# 将ollama-linux-amd64.tgz上传到/data下
cd /data
tar -C /usr -xzf ollama-linux-amd64.tgz
ls /usr/bin/ollama
chmod +x /usr/bin/ollama
# 查看ollama信息
ollama -v
随后将ollama注册成服务:
# 创建ollama有限权限的用户
useradd -r -s /bin/false -m -d /usr/share/ollama ollama
vim /etc/systemd/system/ollama.service
ollama.service内容如下:
其中OLLAMA_HOST表示监听所有IP、OLLAMA_ORIGINS表示所有地址允许跨域
[Unit]
Description=Ollama Service
After=network.target
[Service]
ExecStart=/usr/bin/ollama serve
Restart=always
RestartSec=5s
User=ollama
Group=ollama
Environment="OLLAMA_HOST=0.0.0.0"
Environment="OLLAMA_ORIGINS=*"
[Install]
WantedBy=default.target
以上完成后,进行如下命令注册和检查服务:
systemctl daemon-reload
# 启动服务
systemctl start ollama.service
systemctl enable ollama.service
# 检查状态
systemctl status ollama.service
# 如未启动,检查日志
journalctl -u ollama.service
ollama下部署模型
访问ollama官网model寻找合适的模式,比如https://ollama.com/library/deepseek-r1
可以通过ollama run deepseek-r1
自动获取推荐的最低模型,或者切换下拉选择合适的模型。
以上完成后自动启动deepseek-r1,如果要手动,执行命令:ollama run deepseek-r1
。
安装docker
在龙蜥系统下直接安装docker可能会遇到很多问题,比如podman、containers-common依赖错误,疑似初装AnolisOS时就预装了这些组件,但是与Docker的不匹配,遇到这类问题时,需要先删除这些组件,再安装docker就OK了:
yum -y update
# 设置docker镜像源为阿里的镜像,避免官网访问不到
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 龙蜥系统下安装相关依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
# 龙蜥预装了一些冲突的podman,可以尝试先卸载
yum remove -y podman podman-catatonit
# 还有containers-common也可以卸载
yum remove -y containers-common
# 龙蜥系统下执行docker安装
yum install -y docker-ce docker-ce-cli containerd.io
# 安装完成后,启动 Docker 并设置开机自启
sudo systemctl start docker
# 设置开机启动
sudo systemctl enable docker
# 配置docker用户组
usermod -aG docker your-username
启动docker后,通过 docker ps
如果有结果就说明docker OK了:
设置国内的镜像源:
通过vim /etc/docker/daemon.json
录入如下内容:
{
"registry-mirrors": [
"https://registry.aliyuncs.com",
"https://hub-mirror.c.163.com",
"https://mirror.ccs.tencentyun.com",
"https://repo.huaweicloud.com"
]
}
以上完成后,重启docker即可:
systemctl daemon-reload
systemctl stop docker
systemctl stop docker.socket
systemctl start docker
安装open-webui
参考官网指令GitHub - open-webui/open-webui: User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
直接执行命令下载open-webui:
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
安装需要一定时间,安装完成后通过docker ps
命令查看镜像状态。
测试使用
open-webui默认是3000端口,可以通过访问服务器IP:3000端口到页面,如果ollama下的服务正常的话,open-webui会自动加载模型列表,效果如下:
主要问题
本次主要遇到的问题是ollama默认监听127.0.0.1,导致外网无法访问,甚至docker容器的oepn-webui也访问不到ollama下的模型,解决方案就是ollama.service中增加监听地址和跨域名单的配置,具体见章节ollama.service的配置。