본문 바로가기
AI Study/AI Agent

Ollama를 이용한 환경 세팅

by 하람 Haram 2025. 10. 27.
728x90

Ollama를 왜 사용하냐?

그냥 너도 나도 LLM 모델을 Ollama에 올리길래

Hugging Face 말고 Ollama 써봐야지 하고 환경 세팅을 해봤다

 

Ollama의 장점은

- 오프라인 LLM 이 가능하다는 것이다 (인터넷없이 개인 PC에서 사용)

- cmd 가 직관적임. ollama pull, run, ps, start, stop

- Rest API : 11434 포트를 기본으로 /api/generate 등 엔드포인트를 제공

- 모델 라이프사이클 관리 가 쉽다는 장점이 있다

 

명령어 들은 아래 링크를 통해 알 수 있다

https://docs.ollama.com/cli

 

CLI Reference - Ollama

 

docs.ollama.com

 

 

1. Ollama  다운로드 (Container)

먼저 추후에 Open-Webui까지 사용할 생각이 있다면

https://sy34.net/ollamawa-open-webuireul-iyonghaeseo-opeunsoseu-llmeul-sayonghaeboja-seolcipyeon/

 

Ollama와 Open-WebUI를 이용해서 오픈소스 LLM을 사용해보자 (설치편)

요즘엔 많은 기존 LLM 서비스들이 무료로 많이 풀리고 있다. 특히 채팅 모델은 여러 업체에서 무료로 제공하고 있고 성능과 속도도 일반적인 사용자에게는 충분한 것들이 많다. 다만 기존 서비스

sy34.net

이거대로 다운로드를 하자 (Docker Container에 docker-compose를 이용해서 설치)

https://sseozytank.tistory.com/86

 

[Linux] 도커 컴포즈 (Docker Compose) 기초 개념과 설치부터 실행까지

저번 글을 통해 Docker 에 대해서 알아봤다.나는 개발자가 아니기 때문에 요 포스팅을 끝으로 도커는 마무리하려고 한다.  [Linux] 뉴비를 위한 Docker 기초 개념 및 명령어, 설치부터 예제까지Docker

sseozytank.tistory.com

먼저 나의 경우는 다음과 같이 다운로드 받았다

#기존에 다운로드 받았던게 잘 안되서 삭제
sudo rm /usr/bin/docker-compose
# 최근 배포버전으로 다운
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#실행 권한 부여
sudo chmod +x /usr/local/bin/docker-compose
#설치 제대로 되었는지 확인
docker-compose --version

 

근데 docker-compose version 결과가 다음과 같이 나와서

 -bash: /usr/bin/docker-compose: No such file or directory

딱 봐도 환경변수 문제

(docker-compose를 새로 /usr/local/bin에 설치했는데, 여전히 /usr/bin/docker-compose를 찾으려고 해서 오류가 나는 상황)

여서 

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

새로 설치한 바이너리를 연결하여서 해결

 

 

그 다음 작업환경에 git clone을 해주고 (https://github.com/open-webui/open-webui/tree/main)

git clone https://github.com/open-webui/open-webui.git
cd open-webui

 

docker-compose.yaml 을 이용해줘서 다운 진행

근데 여기서 그대로 넣으면 GPU 사용도 안되고 외부 Port 바인딩도 안된다

개열받는게 얘네는 언급을 안해줘서 몰랐는데

이렇게 옆에 필요하면 가져다 써라 라고 만들어 놨다

(어쩐지 왜 docker-compose 파일이 많은지 이상했었는데)

 

docker-compose.yaml을 다음과 같이 바꿔주자

(GPU 사용, 외부 port 사용이 필요한 경우)

services:
  ollama:
    # GPU support
    deploy:
      resources:
        reservations:
          devices:
            - driver: ${OLLAMA_GPU_DRIVER-nvidia}
              count: ${OLLAMA_GPU_COUNT-1}
              capabilities:
                - gpu
    volumes:
      - ollama:/root/.ollama
    container_name: ollama
    pull_policy: always
    tty: true
    restart: unless-stopped
    image: ollama/ollama:${OLLAMA_DOCKER_TAG-latest}
    # Expose Ollama API outside the container stack
    ports:
      - ${OLLAMA_WEBAPI_PORT-11434}:11434


  open-webui:
    build:
      context: .
      args:
        OLLAMA_BASE_URL: '/ollama'
      dockerfile: Dockerfile
    image: ghcr.io/open-webui/open-webui:${WEBUI_DOCKER_TAG-main}
    container_name: open-webui
    volumes:
      - open-webui:/app/backend/data
    depends_on:
      - ollama
    ports:
      - ${OPEN_WEBUI_PORT-3000}:8080
    environment:
      - 'OLLAMA_BASE_URL=http://ollama:11434'
      - 'WEBUI_SECRET_KEY='
    extra_hosts:
      - host.docker.internal:host-gateway
    restart: unless-stopped

volumes:
  ollama: {}
  open-webui: {}

 

docker-compose up -d

기다려 줍니다

본인 같은 경우는 기존에 다운 받았던 open-webui container랑 충돌이 나서 삭제 후 다시 진행

 

근데 돌리다가 다음과 같은 오류가 나오면

docker: Error response from daemon: could not select device driver with capabilities: [[gpu]]

이건 nvidia-container-toolkit 가 안 깔려 있어서 생기는 문제이다

나 같은 경우는 다음과 같이 해결하였다 (참고로 Window환경에서 WSL로 Linux를 사용하고 있다)

(Toolkit 관련 이것저것 삽질한 이력이 있다면 1번 부터 아니면 2번 부터)

# 1. 잘못된 저장소 파일 삭제
sudo rm /etc/apt/sources.list.d/libnvidia-container.list
sudo rm /etc/apt/sources.list.d/*nvidia*.list

# 2. 아키텍처 변수 설정
ARCH=$(dpkg --print-architecture)

# 3. GPG 키 등록
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | \
sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg

# 4. generic deb 저장소 등록 (배포판 이름 없이)
echo "deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] \
https://nvidia.github.io/libnvidia-container/stable/deb/${ARCH} /" | \
sudo tee /etc/apt/sources.list.d/libnvidia-container.list

# 5. 업데이트 및 설치
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit

# 6. Docker 재시작
sudo systemctl restart docker

 

 

근데 만약에 이렇게 다운 받았더라면

Container에서 ollama가 도는 것이기 때문에

밑에 local 환경이랑은 아예 독립환경이다

 

ollama puill <모델명> 으로 모델을 받아서는 안되고

docker exec -it <컨테이너명> ollama pull <모델명>

컨테이너를 실행시킨 후에 그 안에서 커멘드를 실행시켜야 한다

 

대표적으로 local 환경에는 gpt-oss-20b가 있지만

실제 web-ui에는

모델 선택이 안된다

나의 경우 

ollama라는 컨테이너 명이여서

docker exec -it ollama ollama pull gpt-oss:20b

 

 

 

1-2. Ollama  다운로드 (local)

느낌상으로 Git cmd를 사용하려면 Git 을 다운받듯이 (git pull)

ollama를 사용하여 서버를 열거나 모델을 다운 받기 위해선 ollama를 다운 받아야 한다.

https://ollama.com/download/windows

 

Download Ollama on Windows

Download Ollama for Windows

ollama.com

여기에서 본인에게 맞는 OS를 다운받으면 된다.

(본인은 Window)

 

각 OS 별 cmd나 다운로드 방법은 아래 포스팅이 잘 정리해 두었다

 

로컬 환경에서 API 호스팅을 위한 Ollama 설정 종합 가이드

1 | Ollama란?오프라인 LLM : 인터넷 없이 개인 PC에서 대규모 언어 모델 실행간편 CLI : ollama pull·run·ps·stop 등 직관적 명령어REST API : 11434 포트 기본, /api/generate·chat 등 엔드포인트 제공CPU·GPU 자동 가

memoryhub.tistory.com

 

 

 

 

이거 생기면 성공

 

앱이기 때문에 로그인하고 원하는 모델 다운 받아서 사용이 가능하다

Linux나 서버 단이여서 GUI 환경이 제공이 안된다면

ollama

 

다음 cmd를 쳤을 때 위와 같은 화면이 나오면 성공이다

 


2. Ollama 모델 다운로드

ollama에서 모델 다운로드 하는 것은 github에서 가져오는 것이랑 유사하다

내가 다운 받은 모델은 gpt-oss-20b 이다

https://huggingface.co/openai/gpt-oss-20b/blob/main/README.md

 

README.md · openai/gpt-oss-20b at main

metadata license: apache-2.0 pipeline_tag: text-generation library_name: transformers tags: - vllm Try gpt-oss · Guides · Model card · OpenAI blog Welcome to the gpt-oss series, OpenAI’s open-weight models designed for powerful reasoning, agentic task

huggingface.co

해당 Hugging Face에 들어가면 ollama로 받는 설명이 나온다

(ollama 받고 아래 코드 실행 시켜라)

# gpt-oss-20b
ollama pull gpt-oss:20b
ollama run gpt-oss:20b

그리고 자세한 가이드는 아래 URL을 참고하라고 한다

https://cookbook.openai.com/articles/gpt-oss/run-locally-ollama

 

How to run gpt-oss locally with Ollama | OpenAI Cookbook

Want to get OpenAI gpt-oss running on your own hardware? This guide will walk you through how to use Ollama to set up gpt-oss-20b or gpt-...

cookbook.openai.com

 

다운로드 받고 아래 cmd를 치면

ollama list

다운 받은 모델을 확인할 수 있다

모델을 다운 받았으면 다음 cmd로 실행이 가능하다

ollama run gpt-oss:20b

 

CLI 환경으로 실행된다

 

그리고 지금 돌고 있기 때문에

ollama ps

를 치면

실행되고 있는 process를 확인할 수 있다

 

만약 끄고 싶은 경우는 아래를 참고

  • 터미널에서 ollama run 명령으로 실행한 경우, 해당 터미널에서 Ctrl + C를 누르면 Ollama가 종료됩니다.
  • 모델과 대화 중일 때는 /bye를 입력하여 대화를 종료할 수도 있습니다. 


근데 이 글을 들어왔다는 것은 이걸 로컬 서버에 올리고

다른 PC로 API를 불러 쓰고 싶어서 들어왔기 때문에 로컬 서버에 올려보자

 

3. Ollama  로컬 서버 세팅

다운로드는 그냥 똑같이 해주면 된다.

다만 ollama는 다른 설정을 직접 바꾸지 않는 이상 기본적으로 11434 Port를 사용하고 있는데

여기에 대한 방화벽을 열어줘야 한다

 

- 방화벽 설정 (Window)

아래에도 언급했다시피 나는 인바운드 아웃바운드 둘다 설정해 주었다

Windows Defender 방화벽 → 고급 설정 → 인바운드 규칙 → 새 규칙 → 포트 선택TCP 11434 허용 규칙 추가

 

 

규칙이름은 그렇게 중요하지는 않다.

 

- 방화벽이란

네트워크 단계의 인터넷 보안 시스템 가운데 가장 널리 쓰이는 방법

(외부로 부터 친입을 막는 벽)

설정을 하려면 인바운드 / 아웃바운드에 관해 알아야 하는데

https://m.blog.naver.com/thislover/220909157076

이게 맞는지는 모르겠지만

나는 LLM 서버에 들어오고 결과를 들고 나가야한다고 생각해서

인바운드, 아웃바운드 둘다 설정을 해주었다

 

이렇게 설정을 맞췄으면 ollama를 아래와 같이 열어주자

 

4. Ollama 서버 열기

가장 기본적인 명령어로

ollama serve

 

로 열어 주면 된다

 

그리고 나서 인터넷에

http://127.0.0.1:11434/
혹은
http://localhost:11434/

를 친다면

 

이렇게 실행되고 있다는 것을 알수 있다

 

Error Shooting

Error: listen tcp 127.0.0.1:11434: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.

이 에러가 뜬다면 이미 ollama가 실행되고 있어서 생기는 문제로

실행되고 있는 앱을 끄거나

아래 cmd를 실행

netstat -a -o

여기에서 해당 IP Port를 사용하고 있는 PID를 찾은 다음 (예시: PID = 12345)

taskkill /f /pid 12345

강제 종료 시켜주면 정상 동작하게 된다

 

 

원격 노출시키기

하지만

ollama serve

로 실행한 환경은 기본적으로 http://127.0.0.1:11434 에 바인딩 되기 때문에

내 서버 PC IP 가 10.0.0.9 라고 가정하면

 http://10.0.0.9:11434 를 인터넷에 치면 연결이 되지 않는다

 

실제 출력을 보면

OLLAMA_HOST:http://127.0.0.1:11434

이렇게 바인딩되어 있다

 

하지만 우리가 원하는 꼴은

<원격 서버 IP>:<포트> 를 통해 외부 PC에서 해당 API를 사용하는 것이므로

OLLAMA_HOST:http://0.0.0.0:11434

이렇게 출력이 나와야 한다

 

 

이를 위해 두 가지 방법이 있다

 

1. serve 명령어에 추가

# 모든 인터페이스 + 기본 포트
OLLAMA_HOST=0.0.0.0 ollama serve
# 호스트+포트 동시 지정
OLLAMA_HOST=0.0.0.0:8000 ollama serve

 

2. Powershell을 통해 환경변수 설정

Powershell을 열어서

setx OLLAMA_HOST "0.0.0.0:11434"

를 입력해주고

 

Powershell을 닫았다가 다시 열어준다음

ollama serve

해주면 해결 된다.

 

쉽게 말하면

이걸 바꿔주는 것이다

 

5. 외부 PC에서 접속

이제 serve 까지 해주었으면 다른 PC에서 python editor를 실행시킨다음

다음 코드를 실행시켜 연결을 확인해 준다

(인터넷을 열어 http://<server_ip>:11434 로 확인도 가능하다 ex) https://10.0.0.9:11434)

from openai import OpenAI
client = OpenAI(
    base_url= "http://10.0.0.12:11434/v1", #서버 주소
    api_key= "ollama" #인증 필요 없으므로 더미값 입력 

)
#Chat completion : 언어모델이 사용자가 입력한 텍스트에 대화형식으로 응답을 생성
response = client.chat.completions.create(
    model="gpt-oss:20b",
    #model="/model",  #"gpt-4o"
    messages=[
        {"role": "system", "content": "너는 백설공주 이야기 속의 거울이야. 그 이야기 속의 마법 거울의 캐릭터에 부합하게 답변해줘."}, #system prompt 설정
        {"role": "user", "content": "세상에서 누가 제일 아름답니?"},
    ],
    max_tokens=256, #기본 256, 최대 2048
    temperature=0.7,
)

print(response)

 

 

728x90