从零开始搭建内网 Ollama AI 环境

Ollama 与 Docker 离线安装完全指南

本文将详细介绍如何在没有网络连接的环境中安装 Ollama、Docker 以及 AnythingLLM,适用于内网或安全隔离环境的 AI 部署需求。

准备工作

确认系统架构

在开始之前,需要确认您的 Linux 系统架构以下载对应的安装包:

uname -m;
lscpu

CPU架构确认

Ollama 离线安装

下载安装包

访问 Ollama 官方发布页面:https://github.com/ollama/ollama/releases/tag/v0.5.12

根据您的系统平台选择并下载对应的安装包:

Ollama下载页面

CUDA 相关依赖(可选)

如果您需要 NVIDIA GPU 支持,请从以下地址下载 CUDA 驱动: https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=20.04&target_type=deb_local

模型准备与部署

方法一:从现有环境转换模型

  • 在有网络连接的环境中,使用 ollama pull 下载所需模型
  • 如果找不到模型下载之后放在哪里,可以使用以下命令查找模型存储位置:
     find / -name .ollama
    
  • 找到模型文件并准备转移:

    模型文件

  • 重命名模型文件:
     mv sha256-6340dc3229b0d08ea9cc49b75d4098702983e17b4c096d57afbbf2ffc813f2be /home/test/offline-ollama/deepseek-r18b.gguf
    

    重命名模型

  • 保存模型配置信息到 Modelfile:

    模型配置文件

  • 修改 Modelfile 中 FROM 行,指向实际的 .gguf 模型文件(可使用相对或绝对路径)

在内网环境部署模型

  • 将 Modelfile 和 .gguf 模型文件拷贝到内网机器
  • 执行以下命令创建模型:
     ollama create mymodel -f /path/to/Modelfile
    

    创建模型

Docker 离线安装 (Linux)

下载 Docker 静态二进制文件

访问 Docker 官方下载页面:https://download.docker.com/linux/static/stable/x86_64/

选择合适的版本下载: Docker下载

安装步骤

  1. 解压 Docker 压缩包:
    tar -xvf docker-28.0.0.tgz
    
  2. 赋予可执行权限并复制到系统目录:
    chmod +x docker/*
    cp docker/* /usr/bin
    

Docker文件复制

  1. 创建 Docker 服务并启动:
    systemctl daemon-reload
    systemctl start docker
    systemctl status docker
    

Docker服务状态

AnythingLLM 部署

准备工作

  • 在有网络连接的环境中,下载 AnythingLLM 镜像:
     docker pull mintplexlabs/anythingllm
     docker save -o anythingllm.tar mintplexlabs/anythingllm
    

    保存Docker镜像

  • 确认镜像已保存: 确认镜像

内网环境部署

  • 将 Docker 安装包和 AnythingLLM 镜像文件传输到内网服务器

  • 加载 AnythingLLM 镜像:
     docker load -i anythingllm.tar
    
  • 设置存储目录权限:
     chmod -R 777 $HOME/anythingllm
    
  • 启动 AnythingLLM 服务:
     export STORAGE_LOCATION=$HOME/anythingllm && \
     mkdir -p $STORAGE_LOCATION && \
     touch "$STORAGE_LOCATION/.env" && \
     docker run -d -p 3001:3001 --cap-add SYS_ADMIN \
       -v ${STORAGE_LOCATION}:/app/server/storage \
       -v ${STORAGE_LOCATION}/.env:/app/server/.env \
       -e STORAGE_DIR="/app/server/storage" \
       -e HOST="0.0.0.0" \
       mintplexlabs/anythingllm
    
  • 检查存储目录: 存储目录

  • 访问服务(IP:3001): AnythingLLM界面

Windows Server Docker 安装参考

  1. 下载地址:https://download.docker.com/win/static/stable/x86_64

  2. 查看 Windows 版本号: Windows版本

  3. 下载对应的 Docker 安装包: Docker下载中

  4. 使用 PowerShell 进入下载目录: PowerShell

  5. 解压文件: 解压文件

  6. 进入解压目录找到 docker 和 dockerd 可执行文件: Docker程序

错误记录

  • docker启动的时候遇到cgroups的错误,将以下的脚本内容保存到一个sh文件中,然后执行。
#!/bin/sh
# Copyright 2011 Canonical, Inc
#           2014 Tianon Gravi
# Author: Serge Hallyn <[email protected]>
#         Tianon Gravi <[email protected]>
set -e

# for simplicity this script provides no flexibility

# if cgroup is mounted by fstab, don't run
# don't get too smart - bail on any uncommented entry with 'cgroup' in it
if grep -v '^#' /etc/fstab | grep -q cgroup; then
        echo 'cgroups mounted from fstab, not mounting /sys/fs/cgroup'
        exit 0
fi

# kernel provides cgroups?
if [ ! -e /proc/cgroups ]; then
        exit 0
fi

# if we don't even have the directory we need, something else must be wrong
if [ ! -d /sys/fs/cgroup ]; then
        exit 0
fi

# mount /sys/fs/cgroup if not already done
if ! mountpoint -q /sys/fs/cgroup; then
        mount -t tmpfs -o uid=0,gid=0,mode=0755 cgroup /sys/fs/cgroup
fi

cd /sys/fs/cgroup

# get/mount list of enabled cgroup controllers
for sys in $(awk '!/^#/ { if ($4 == 1) print $1 }' /proc/cgroups); do
        mkdir -p $sys
        if ! mountpoint -q $sys; then
                if ! mount -n -t cgroup -o $sys cgroup $sys; then
                        rmdir $sys || true
                fi
        fi
done

# example /proc/cgroups:
#  #subsys_name hierarchy       num_cgroups     enabled
#  cpuset       2       3       1
#  cpu  3       3       1
#  cpuacct      4       3       1
#  memory       5       3       0
#  devices      6       3       1
#  freezer      7       3       1
#  blkio        8       3       1

# enable cgroups memory hierarchy, like systemd does (and lxc/docker desires)
# https://github.com/systemd/systemd/blob/v245/src/core/cgroup.c#L2983
# https://bugs.debian.org/940713
if [ -e /sys/fs/cgroup/memory/memory.use_hierarchy ]; then
        echo 1 > /sys/fs/cgroup/memory/memory.use_hierarchy
fi

exit 0
flowchart LR
    A[开始部署] --> B{选择操作系统}
    B -->|Linux| C[准备Docker静态包]
  
    %% 主流程横向排列
    subgraph 主部署流程
    direction TB
    C --> E[解压安装包]
    E --> F[设置可执行权限]
    F --> G[复制到系统目录]
    G --> H[启动Docker服务]
    H --> I[加载AnythingLLM镜像]
    I --> J[创建存储目录]
    J --> K[运行容器]
    end

    %% 验证流程横向排列
    subgraph 验证流程
    direction TB
    K --> O[验证服务状态]
    O --> P{是否成功?}
    P -->|是| Q[部署完成]
    P -->|否| R[检查错误日志]
    R --> B
    end

版权声明: 如无特别声明,本文版权归 sshipanoo 所有,转载请注明本文链接。

(采用 CC BY-NC-SA 4.0 许可协议进行授权)

本文标题:《 Ollama 完整离线安装指南 》

本文链接:http://0.0.0.0:3015/ai/ollama-offline-install.html

本文最后一次更新为 天前,文章中的某些内容可能已过时!