一、解压并安装 Ollama
1. 解压文件
root@yuhua-virtualmachine:~# tar -xzvf ollama-linux-amd64.tgz
bin/ollama
lib/ollama/cuda_v11/
lib/ollama/cuda_v11/libggml-cuda.so
lib/ollama/cuda_v11/libcublas.so.11
lib/ollama/cuda_v11/libcublas.so.11.5.1.109
lib/ollama/cuda_v11/libcublasLt.so.11.5.1.109
lib/ollama/cuda_v11/libcudart.so.11.3.109
lib/ollama/cuda_v11/libcublasLt.so.11
lib/ollama/cuda_v11/libcudart.so.11.0
lib/ollama/cuda_v12/
lib/ollama/cuda_v12/libggml-cuda.so
lib/ollama/cuda_v12/libcudart.so.12
lib/ollama/cuda_v12/libcudart.so.12.8.90
lib/ollama/cuda_v12/libcublasLt.so.12
lib/ollama/cuda_v12/libcublas.so.12.8.4.1
lib/ollama/cuda_v12/libcublas.so.12
lib/ollama/cuda_v12/libcublasLt.so.12.8.4.1
lib/ollama/libggml-base.so
lib/ollama/libggml-cpu-alderlake.so
lib/ollama/libggml-cpu-haswell.so
lib/ollama/libggml-cpu-icelake.so
lib/ollama/libggml-cpu-sandybridge.so
lib/ollama/libggml-cpu-skylakex.so
root@yuhua-virtualmachine:~# ls
模板 bin lib ollama-linux-amd64.tgz
2. 创建安装目录
root@yuhua-virtualmachine:~# sudo mkdir -p /opt/ollama
root@yuhua-virtualmachine:~# sudo cp -r bin/ /opt/ollama/
root@yuhua-virtualmachine:~# sudo cp -r lib/ /opt/ollama/
3.创建符号链接到系统路径
sudo ln -s /opt/ollama/bin/ollama /usr/local/bin/ollama
4. 配置动态库路径
确保 Ollama 能找到 CUDA 和 CPU 架构的动态库:
root@yuhua-virtualmachine:~# sudo ln -s /opt/ollama/bin/ollama /usr/local/bin/ollama
root@yuhua-virtualmachine:~# echo "export LD_LIBRARY_PATH=/opt/ollama/lib/ollama:\$LD_LIBRARY_PATH" | sudo tee -a /etc/profile.d/ollama.sh
export LD_LIBRARY_PATH=/opt/ollama/lib/ollama:$LD_LIBRARY_PATH
root@yuhua-virtualmachine:~# source /etc/profile.d/ollama.sh
5. 验证安装
提示无法连接到正在运行的Ollama实例,是因为没有配置service服务
root@yuhua-virtualmachine:~# ollama --version
Warning: could not connect to a running Ollama instance
Warning: client version is 0.6.5
二、配置 Ollama 服务
1. 创建专用用户和目录
# 创建 ollama 用户的主目录(如果不存在)
sudo mkdir -p /home/ollama
# 设置目录所有权为 ollama 用户
sudo chown ollama:ollama /home/ollama
# 确保目录权限正确(用户可读写)
```bash
# 创建 ollama 用户的主目录(如果不存在)
sudo mkdir -p /home/ollama
# 创建组和用户
sudo groupadd ollama
sudo useradd -r -m -d /home/ollama -g ollama ollama
# 设置目录所有权为 ollama 用户
sudo chown ollama:ollama /home/ollama
# 确保目录权限正确(用户可读写)
sudo chmod 700 /home/ollama
#创建模型存储目录并授权
sudo mkdir -p /etc/ollama /data/ollama
sudo chown -R ollama:ollama /etc/ollama /data/ollama
2. 配置 Systemd 服务
sudo tee /etc/systemd/system/ollama.service <<'EOF'
[Unit]
Description=Ollama Service
After=network-online.target
Requires=network-online.target
[Service]
User=ollama
Group=ollama
ExecStart=/usr/local/bin/ollama serve
Restart=on-failure
# 环境变量
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Environment="OLLAMA_MODELS=/data/ollama"
Environment="OLLAMA_HOST=0.0.0.0:11434" # 绑定所有接口,端口 11434
# 资源限制
MemoryLimit=4G
CPUQuota=200%
# 安全配置
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=full
[Install]
WantedBy=multi-user.target
EOF
3. 启动服务
sudo systemctl daemon-reload
sudo systemctl start ollama
sudo systemctl enable ollama
4. 放行防火墙端口
#中科方德默认是关闭防火墙状态的,如果需要开启就执行下面的操作
#启用 ufw 防火墙
sudo ufw enable
#放行ssh端口和ollama端口
sudo ufw allow 11434/tcp
sudo ufw allow 22/tcp
#重新加载防火墙规则
sudo ufw reload
#验证规则是否生效
sudo ufw status
三、验证安装
1. 检查服务状态
root@yuhua-virtualmachine:~# sudo systemctl status ollama.service
● ollama.service - Ollama Service
Loaded: loaded (/etc/systemd/system/ollama.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2025-04-17 15:13:12 CST; 11min ago
Main PID: 15890 (ollama)
Tasks: 13 (limit: 18096)
Memory: 19.4M (limit: 4.0G)
CPU: 486ms
CGroup: /system.slice/ollama.service
└─15890 /usr/local/bin/ollama serve
4月 17 15:13:12 yuhua-virtualmachine ollama[15890]: time=2025-04-17T15:13:12.690+08:00 level=INFO source=images.go:458 msg="total blobs: 0"
4月 17 15:13:12 yuhua-virtualmachine ollama[15890]: time=2025-04-17T15:13:12.690+08:00 level=INFO source=images.go:465 msg="total unused blobs removed: 0"
4月 17 15:13:12 yuhua-virtualmachine ollama[15890]: time=2025-04-17T15:13:12.690+08:00 level=INFO source=routes.go:1298 msg="Listening on [::]:11434 (version 0.6.5)"
4月 17 15:13:12 yuhua-virtualmachine ollama[15890]: time=2025-04-17T15:13:12.691+08:00 level=INFO source=gpu.go:217 msg="looking for compatible GPUs"
4月 17 15:13:12 yuhua-virtualmachine ollama[15890]: time=2025-04-17T15:13:12.994+08:00 level=INFO source=gpu.go:602 msg="no nvidia devices detected by library /usr/nfs-nvidia-drivers/470.129/usr/li>
4月 17 15:13:13 yuhua-virtualmachine ollama[15890]: time=2025-04-17T15:13:13.201+08:00 level=INFO source=gpu.go:377 msg="no compatible GPUs were discovered"
4月 17 15:13:13 yuhua-virtualmachine ollama[15890]: time=2025-04-17T15:13:13.201+08:00 level=INFO source=types.go:130 msg="inference compute" id=0 library=cpu variant="" compute="" driver=0.0 name=>
4月 17 15:13:22 yuhua-virtualmachine systemd[1]: /etc/systemd/system/ollama.service:15: Invalid environment assignment, ignoring: #
4月 17 15:13:22 yuhua-virtualmachine systemd[1]: /etc/systemd/system/ollama.service:15: Invalid environment assignment, ignoring: 绑定所有接口,端口
4月 17 15:13:22 yuhua-virtualmachine systemd[1]: /etc/systemd/system/ollama.service:15: Invalid environment assignment, ignoring: 11434
root@yuhua-virtualmachine:~#
2. 验证端口监听状态
root@yuhua-virtualmachine:~# ss -tulnp | grep 11434
tcp LISTEN 0 4096 *:11434 *:* users:(("ollama",pid=15890,fd=3))
root@yuhua-virtualmachine:~#
3. 测试 API 连通性
root@yuhua-virtualmachine:~# curl http://localhost:11434
Ollama is runningroot@yuhua-virtualmachine:~#
四、安装 DeepSeek 模型
1. 直接拉取模型(需网络通畅)
#建议部署1.5b,我是虚拟机部署的,运行的太卡
root@yuhua-virtualmachine:~# ollama pull deepseek-r1:7b
pulling manifest
pulling 96c415656d37... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 4.7 GB
pulling 369ca498f347... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 387 B
pulling 6e4c38e1172f... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 1.1 KB
pulling f4d24e9138dd... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 148 B
pulling 40fb844194b2... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 487 B
verifying sha256 digest
writing manifest
success
root@yuhua-virtualmachine:~#
2. 运行模型
root@yuhua-virtualmachine:~# ollama run deepseek-r1:7b
>>> 你好,DeepSeek!
<think>
</think>
你好!我是DeepSeek-R1,一个由深度求索公司开发的智能助手,我会尽我所能为您提供帮助。请问有什么可以为您服务的?
五、安装 Open WebUI
1.添加 Docker 仓库
# 安装依赖工具
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release
# 创建 GPG 密钥目录
sudo mkdir -p /etc/apt/keyrings
# 下载阿里云 Docker GPG 密钥
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker-aliyun.gpg
# 添加阿里云 Docker 源(适配 Debian 11)
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker-aliyun.gpg] https://mirrors.aliyun.com/docker-ce/linux/debian bullseye stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
2.安装 Docker
使用以下命令安装 Docker:
root@yuhua-virtualmachine:/etc/apt/keyrings# sudo apt install docker-ce docker-ce-cli containerd.io
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成
将会同时安装下列软件:
apparmor docker-ce-rootless-extras docker-scan-plugin libslirp0 pigz slirp4netns
建议安装:
apparmor-profiles-extra apparmor-utils cgroupfs-mount | cgroup-lite
下列【新】软件包将被安装:
apparmor containerd.io docker-ce docker-ce-cli docker-ce-rootless-extras docker-scan-plugin libslirp0 pigz slirp4netns
升级了 0 个软件包,新安装了 9 个软件包,要卸载 0 个软件包,有 301 个软件包未被升级。
需要下载 101 MB 的归档。
解压缩后会消耗 402 MB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 https://repos.os.nfschina.com/deb/nfs/tiger-1018-g212 base/main amd64 pigz amd64 2.6-1+nfs5 [64.7 kB]
获取:2 https://mirrors.aliyun.com/docker-ce/linux/debian bullseye/stable amd64 containerd.io amd64 1.7.27-1 [30.5 MB]
获取:3 https://softcenter-all.os.nfschina.com/nfscdos 3.0/depend amd64 docker-ce-cli amd64 5:20.10.17 [40.6 MB]
获取:4 https://repos.os.nfschina.com/deb/nfs/tiger-1018-g212 base/main amd64 apparmor amd64 2.13.6-10+nfs5 [641 kB]
获取:5 https://repos.os.nfschina.com/deb/nfs/tiger-1018-g212-upstream base/main amd64 libslirp0 amd64 4.4.0-1+deb11u2 [58.6 kB]
获取:6 https://repos.os.nfschina.com/deb/nfs/tiger-1018-g212-upstream base/main amd64 slirp4netns amd64 1.0.1-2 [34.0 kB]
获取:7 https://mirrors.aliyun.com/docker-ce/linux/debian bullseye/stable amd64 docker-ce amd64 5:28.0.4-1~debian.11~bullseye [19.1 MB]
获取:8 https://mirrors.aliyun.com/docker-ce/linux/debian bullseye/stable amd64 docker-ce-rootless-extras amd64 5:28.0.4-1~debian.11~bullseye [6,090 kB]
获取:9 https://mirrors.aliyun.com/docker-ce/linux/debian bullseye/stable amd64 docker-scan-plugin amd64 0.23.0~debian-bullseye [3,623 kB]
已下载 101 MB,耗时 26秒 (3,813 kB/s)
正在预设定软件包 ...
正在选中未选择的软件包 pigz。
(正在读取数据库 ... 系统当前共安装有 247821 个文件和目录。)
准备解压 .../0-pigz_2.6-1+nfs5_amd64.deb ...
正在解压 pigz (2.6-1+nfs5) ...
正在选中未选择的软件包 apparmor。
准备解压 .../1-apparmor_2.13.6-10+nfs5_amd64.deb ...
正在解压 apparmor (2.13.6-10+nfs5) ...
正在选中未选择的软件包 containerd.io。
准备解压 .../2-containerd.io_1.7.27-1_amd64.deb ...
正在解压 containerd.io (1.7.27-1) ...
正在选中未选择的软件包 docker-ce-cli。
准备解压 .../3-docker-ce-cli_5%3a20.10.17_amd64.deb ...
正在解压 docker-ce-cli (5:20.10.17) ...
正在选中未选择的软件包 docker-ce。
准备解压 .../4-docker-ce_5%3a28.0.4-1~debian.11~bullseye_amd64.deb ...
正在解压 docker-ce (5:28.0.4-1~debian.11~bullseye) ...
正在替换原软件包中的文件 docker-ce-cli (5:20.10.17) ...
正在选中未选择的软件包 docker-ce-rootless-extras。
准备解压 .../5-docker-ce-rootless-extras_5%3a28.0.4-1~debian.11~bullseye_amd64.deb ...
正在解压 docker-ce-rootless-extras (5:28.0.4-1~debian.11~bullseye) ...
正在选中未选择的软件包 docker-scan-plugin。
准备解压 .../6-docker-scan-plugin_0.23.0~debian-bullseye_amd64.deb ...
正在解压 docker-scan-plugin (0.23.0~debian-bullseye) ...
正在选中未选择的软件包 libslirp0:amd64。
准备解压 .../7-libslirp0_4.4.0-1+deb11u2_amd64.deb ...
正在解压 libslirp0:amd64 (4.4.0-1+deb11u2) ...
正在选中未选择的软件包 slirp4netns。
准备解压 .../8-slirp4netns_1.0.1-2_amd64.deb ...
正在解压 slirp4netns (1.0.1-2) ...
正在设置 docker-scan-plugin (0.23.0~debian-bullseye) ...
正在设置 apparmor (2.13.6-10+nfs5) ...
Created symlink /etc/systemd/system/sysinit.target.wants/apparmor.service → /lib/systemd/system/apparmor.service.
正在设置 containerd.io (1.7.27-1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/containerd.service → /lib/systemd/system/containerd.service.
正在设置 docker-ce-cli (5:20.10.17) ...
正在设置 libslirp0:amd64 (4.4.0-1+deb11u2) ...
正在设置 pigz (2.6-1+nfs5) ...
正在设置 docker-ce-rootless-extras (5:28.0.4-1~debian.11~bullseye) ...
正在设置 slirp4netns (1.0.1-2) ...
正在设置 docker-ce (5:28.0.4-1~debian.11~bullseye) ...
(2025-04-17 16:01:09:739973): [sss_cache] [confdb_get_enabled_domain_list] (0x0040): Failed to get [domains] from [sssd], error [2] (No such file or directory)
(2025-04-17 16:01:09:740116): [sss_cache] [init_domains] (0x0020): Could not initialize domains
(2025-04-17 16:01:09:755621): [sss_cache] [confdb_get_enabled_domain_list] (0x0040): Failed to get [domains] from [sssd], error [2] (No such file or directory)
(2025-04-17 16:01:09:755700): [sss_cache] [init_domains] (0x0020): Could not initialize domains
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /lib/systemd/system/docker.service.
Created symlink /etc/systemd/system/sockets.target.wants/docker.socket → /lib/systemd/system/docker.socket.
正在处理用于 man-db (2.9.4-2+nfs5) 的触发器 ...
正在处理用于 libc-bin (2.31-13+deb11u3+m3+1nfs5) 的触发器 ...
3.启动并启用 Docker 服务
启动 Docker 服务并设置为开机自启动:
root@yuhua-virtualmachine:~# systemctl start docker
root@yuhua-virtualmachine:~# systemctl status docker.service
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2025-04-17 16:01:11 CST; 1min 25s ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 22645 (dockerd)
Tasks: 17
Memory: 36.5M
CPU: 394ms
CGroup: /system.slice/docker.service
└─22645 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
4月 17 16:01:11 yuhua-virtualmachine dockerd[22645]: time="2025-04-17T16:01:11.154428478+08:00" level=info msg="Creating a containerd client" address=/run/containerd/containerd.sock timeout=1m0s
4月 17 16:01:11 yuhua-virtualmachine dockerd[22645]: time="2025-04-17T16:01:11.213538846+08:00" level=info msg="Loading containers: start."
4月 17 16:01:11 yuhua-virtualmachine dockerd[22645]: time="2025-04-17T16:01:11.596295051+08:00" level=info msg="Loading containers: done."
4月 17 16:01:11 yuhua-virtualmachine dockerd[22645]: time="2025-04-17T16:01:11.642240668+08:00" level=warning msg="WARNING: No swap limit support"
4月 17 16:01:11 yuhua-virtualmachine dockerd[22645]: time="2025-04-17T16:01:11.642319840+08:00" level=info msg="Docker daemon" commit=6430e49 containerd-snapshotter=false storage-driver=overlay2 ve>
4月 17 16:01:11 yuhua-virtualmachine dockerd[22645]: time="2025-04-17T16:01:11.642468432+08:00" level=info msg="Initializing buildkit"
4月 17 16:01:11 yuhua-virtualmachine dockerd[22645]: time="2025-04-17T16:01:11.684315649+08:00" level=info msg="Completed buildkit initialization"
4月 17 16:01:11 yuhua-virtualmachine dockerd[22645]: time="2025-04-17T16:01:11.689274710+08:00" level=info msg="Daemon has completed initialization"
4月 17 16:01:11 yuhua-virtualmachine dockerd[22645]: time="2025-04-17T16:01:11.689349911+08:00" level=info msg="API listen on /run/docker.sock"
4月 17 16:01:11 yuhua-virtualmachine systemd[1]: Started Docker Application Container Engine.
root@yuhua-virtualmachine:~# systemctl enable docker --now
Synchronizing state of docker.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable docker
root@yuhua-virtualmachine:~#
4.验证 Docker 安装
运行以下命令检查 Docker 版本:
root@yuhua-virtualmachine:~# docker --version
Docker version 20.10.17, build 100c701
5.通过 Docker 快速安装open-webui
root@yuhua-virtualmachine:/etc/docker# docker run -d -p 3000:8080 -e OLLAMA_BASE_URL=http://172.16.104.198:11434 -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
Unable to find image 'ghcr.io/open-webui/open-webui:main' locally
main: Pulling from open-webui/open-webui
8a628cdd7ccc: Pull complete
2a47a8c4fd5c: Pull complete
9c538fc35491: Pull complete
47bbb0afa7fe: Pull complete
782acb99e453: Pull complete
4f4fb700ef54: Pull complete
b7915144f9c7: Pull complete
633be3c6bab0: Pull complete
266a80d83771: Pull complete
7b4a3fa111d1: Pull complete
693caf783e3a: Pull complete
97ff98dacde6: Pull complete
53d690d19f88: Pull complete
7f63df9becfe: Pull complete
070c200fcfe6: Pull complete
Digest: sha256:36355448501a41b589cfd0a83c3763fcbabc655bc5d2d0c750c67bc8610e7562
Status: Downloaded newer image for ghcr.io/open-webui/open-webui:main
eee09f91c5a7b6dcdf367974e4c5b1c97f8d058c5e35d232ff3531c497441c10
如果docker不能使用查看方德桌面操作系统V5.0-G23安装Docker并配置DockerHub镜像加速器
六、访问open-webui(http://ip:3000)
如果第一次访问ip时没有报500,就可以登录进去关闭openai的API
如果访问OpenWebUI报500 解决docker安装OpenWebUl报错 500