1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ollama + Open-WebUIを完全スタンドアロンでセットアップしてみた

Last updated at Posted at 2024-12-29

動機

ローカルLLMを使用したい人の中には、ネットワークから完全に切り離された環境で使いたいという人もいるだろうなと思ったので。

前提条件

  • オンライン環境で稼働しているdocker環境

事前準備

作業用Linux環境でいろいろと必要なファイルを作ったりダウンロードしたりする。

docker pullで各イメージを入手

$ docker pull ollama/ollama:latest
$ docker pull ghcr.io/open-webui/open-webui:main

入手したイメージをdocker saveでファイルに保存する

$ docker save ollama/ollama:latest | gzip > ollama.tar.gz
$ docker save ghcr.io/open-webui/open-webui:main | gzip > open-webui.tar.gz

dockerの実行ファイルを入手する

以下のURLから最新のdocker-x.x.x.tgzをダウンロードする
https://download.docker.com/linux/static/stable/x86_64/

docker-composeの実行ファイルを入手する

以下のURL(GitHub)から実行ファイルをダウンロードする
https://github.com/docker/compose/releases

Ollamaで稼働させたいModelをダウンロードする

稼働させたいGGUFをダウンロードする

※今回はELYZAを使用しました。
https://huggingface.co/elyza/Llama-3-ELYZA-JP-8B-GGUF/tree/main

ダウンロードしたファイルに合わせてModelfileを作成し、GGUFと同じ場所に置く

Modelfile
FROM ./Llama-3-ELYZA-JP-8B-q4_k_m.gguf
TEMPLATE """{{ if .System }}<|start_header_id|>system<|end_header_id|>

{{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>

{{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>

{{ .Response }}<|eot_id|>"""
PARAMETER stop "<|start_header_id|>"
PARAMETER stop "<|end_header_id|>"
PARAMETER stop "<|eot_id|>"
PARAMETER stop "<|reserved_special_token"

インストール

以下手順を展開先の実機で作業する。

iptablesのインストール(debianのセットアップDVDに含まれている)

# apt install iptables

dockerグループを追加し、作業ユーザを参加させる

# groupadd docker
# usermod -aG docker $USER

docker本体のインストール

# tar xzvf docker-x.x.x.tgz
# cp docker/* /usr/bin/

docker本体とdockerのLinuxソケットをsystemdに登録

/usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target
Wants=network-online.target
Requires=docker.socket

[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target
/usr/lib/systemd/system/docker.socket
[Unit]
Description=Docker Socket for the API

[Socket]
ListenStream=/run/docker.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker

[Install]
WantedBy=sockets.target

dockerを起動し、自動起動するよう設定する

# systemctl daemon-reload
# systemctl start docker.service
# systemctl enable docker.service

dockerイメージをインポートする

# docker load < ollama.tar.gz
# docker load < open-webui.tar.gz

docker-composeのインストール

この時点でコンテナを立ち上げる準備は完了しているが、管理を楽にするために
docker-composeをセットアップしておく。

# cp docker-compose /usr/local/bin/
# chmod +x /usr/local/bin/docker-compose

docker-composeで管理する用のフォルダを作成する

まあ、どこでもいいです。

# mkdir /opt/ollama
# cd /opt/ollama

docker-compose.ymlを作成する

/opt/ollama/docker-compose.yml
services:
  ollama:
    image: ollama/ollama
    container_name: ollama
    volumes:
      - ollama:/root/.ollama
      - ./model:/root/model
    ports:
      - "11434:11434"
    restart: unless-stopped
# GPUを利用する場合、ここのコメントを外す
#    deploy:
#      resources:
#        reservations:
#          devices:
#          - driver: nvidia
#            capabilities: ["gpu"]
#            count: all

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    ports:
      - "3000:8080"
    volumes:
      - open-webui:/app/backend/data
    extra_hosts:
      - "host.docker.internal:host-gateway"
    restart: always

volumes:
  ollama:
  open-webui:

コンテナを起動する

# docker-compose up -d

OllamaコンテナにModelファイルをインポートする

docker-compose.ymlのあるフォルダにmodelフォルダができているので、そこにGGUFとModelfileを格納する。

/opt/ollama/model/
# ls
Llama-3-ELYZA-JP-8B-q4_k_m.gguf Modelfile

コンテナの中に入る

# docker-compose exec ollama bash
#

GGUFをインポートする

# cd ~/model
# ollama create elyza:jp8b -f ModelFile

コンテナから出る

# exit

以上でセットアップは終了。

動作確認

http://localhost:3000 でOpen-WebUIにアクセスできる。

image.png

おまけ

一連のファイルをISOファイルにしておくとVMに入れるときとかに便利です。

# mkisofs -r -J -V ollama -allow-limited-size -o ollama-standalone.iso ollama
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?