Linux+ollama离线包+deepseek+docker+openwebui部署经验

计划在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自动获取推荐的最低模型,或者切换下拉选择合适的模型。

image.png

以上完成后自动启动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了:

image.png

设置国内的镜像源:

通过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会自动加载模型列表,效果如下:

image.png

主要问题

本次主要遇到的问题是ollama默认监听127.0.0.1,导致外网无法访问,甚至docker容器的oepn-webui也访问不到ollama下的模型,解决方案就是ollama.service中增加监听地址和跨域名单的配置,具体见章节ollama.service的配置。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容