0
1

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 + OpenWebUI をリバースプロキシ経由でアクセス

Last updated at Posted at 2025-08-03

この記事について

個人の備忘録的なところがあるため、内容の精度については私が使用した環境依存です。

目的

自宅のパソコンにollama + OpenWebUIを入れて、ローカルLLMを動かしてみたい!
あと、自宅のNWの踏み台VMにリバースプロキシコンテナを作成しているので、自宅NW内に作成したローカルLLMに対してリバースプロキシを経由してアクセスさせたい。

踏み台VMにはtailscaleを入れているのでブラウザに下記を入れてアクセスできるようにしたい。
http://<tailscaleのIP>:<ポート番号>

構成

したいこと

ローカルLLMコンテナのホストのスペックは下記

  • CPU: Ryzen 7 5700U(8コア, 16スレッド)
  • RAM: 32GB
  • ストレージ: 512GB SSD

リバースプロキシ

踏み台VMに載っているコンテナ
dockerfile(抜粋)

FROM nginx:latest

RUN sudo apt update
RUN sudo apt -y install apache2-utils

EXPOSE <外部から繋ぐポート番号1>

ollama + OpenWebUI

docker-composeで下記を作成

services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    volumes:
      - ./ollama_data:/root/.ollama
    ports:
      - "11434:11434"
    restart: unless-stopped

  ollama-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: ollama-webui
    ports:
      - "<OpenWebUIとリバースプロキシを繋ぐポート番号2>:8080"
    volumes:
      - ./ollama_webui_data:/app/backend/data
    environment:
      OLLAMA_BASE_URL: "http://ollama:11434"
    depends_on:
      - ollama
    restart: unless-stopped

手順

踏み台VM上(リバースプロキシコンテナ)

sudo docker build -t reverse_proxy .
sudo docker run -d --name reverse_proxy -p 9001:9001 --restart=always reverse_proxy
sudo docker exec -it reverse_proxy /bin/sh

# ベーシック認証を使いたいから
htpasswd -c /etc/nginx/.htpasswd <ユーザー名>

# ポートの設定
sudo vim -p /etc/nginx/conf.d/llm-port.conf
server {
    listen <ポート番号1>;
    server_name localhost;

    access_log /var/log/nginx/llm-direct-access.log;
    error_log  /var/log/nginx/llm-direct-error.log;

    # ルートパスで直接転送(/llm/プレフィックスなし)
    location / {
        proxy_pass http://<OpenWebUIが載っているホストのIP>:<ポート番号2>;

        # WebSocketサポート
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;

        # 認証設定
	auth_basic "Restricted Content";
	auth_basic_user_file /etc/nginx/.htpasswd;
    }
}
sudo nginx -s reload

ollama + OpenWebUI

# 上に記載したdocker-compose.ymlを使う
sudo docker compose -f docker-compose.yml up -d
sudo docker exec -it ollama ollama pull tinyllama

ブラウザアクセス

http://<tailscaleのIP>:<ポート番号1>でアクセス

エラー遭遇

サブパスでアクセス使用にしたらjsの例外で404になってしまった

本当はhttp://IP:port/llm/でアクセスしたかった。
zabbixや他のものも構築しているので開けるポートは一つだけでサブパスで各種サービスへのアクセスを切り替えたかった。
例えば下記のようなエラーが出た

GET http://<IP>:<port>/_app/immutable/entry/start.4d0d7042.js net::ERR_ABORTED 404 (Not Found)

/llm/_app/...といった形で出て欲しかったが、絶対パスになっていた
色々パスの書き換え設定をリバースプロキシコンテナ側でしたが、どうしてもうまくいかなかったので、サブパスはやめた
正直Web系の知識が乏しいからなんとも言えない。ちなみにzabbixならサブパスでうまく行ったんだけどなぁ。

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?