Ollama 설치와 로컬 LLM 서버 구축 방법
요약: Ollama로 Linux 서버에서 로컬 LLM을 실행하는 방법을 설명합니다. 설치, 외부 접속 설정, 모델 선택, HTTP API 호출 예제로 개인 AI 서버 구축 흐름을 정리합니다.

개요
Ollama는 개인 서버나 PC에서 LLM을 직접 실행할 수 있게 해주는 로컬 AI 실행 도구입니다.
필요한 모델을 내려받아 내 환경에서 실행하므로 외부 AI 서비스에 데이터를 보내지 않고도 챗봇, 문서 요약, 코드 보조 기능을 구성할 수 있습니다.
이 글에서는 Linux 서버에 Ollama를 설치하고 외부 접속을 허용하는 방법을 정리합니다.
Oracle Cloud A1 ARM 환경에서 사용할 만한 모델 선택 기준과 HTTP API 호출 예제도 함께 다룹니다.
주의할 점
Ollama는 주로 HTTP API 방식으로 사용됩니다.
외부 접속을 허용하면 같은 네트워크 밖에서도 모델 호출이 가능해질 수 있으므로 접근 제어가 필요합니다.
인터넷에 직접 노출할 때는 아래 보호 장치를 함께 구성하는 것을 권장합니다.
- 방화벽으로 11434 포트를 신뢰할 수 있는 IP 대역에만 허용한다.
- VPN으로 접속을 우회한다. 개인적으로 Tailscale을 추천한다.
- 리버스 프록시(nginx 등) 뒤에 두고 인증을 붙인다.
- 허용 IP를 명시적으로 제한한다.
설치
스크립트 설치
1curl -fsSL https://ollama.com/install.sh | sh
실행 확인
1ollama --version
서비스 확인
1systemctl status ollama
서비스 자동 시작
1sudo systemctl enable ollama
로그 확인
1journalctl -u ollama -f
외부 접속 허용
bind ip 확인
- 아래 예시 기준으로 127.0.0.1 바인딩
- 로컬에서만 접근된다는 뜻
1ss -tlnp | grep 11434
2
3# Result
4# LISTEN 0 4096 127.0.0.1:11434 0.0.0.0:*
설정 디렉토리 생성
1sudo mkdir -p /etc/systemd/system/ollama.service.d
환경 설정 파일 편집
1sudo vim /etc/systemd/system/ollama.service.d/override.conf
내용 추가
1[Service]
2Environment="OLLAMA_HOST=0.0.0.0:11434"
서비스 적용
1sudo systemctl daemon-reload
2sudo systemctl restart ollama
바인딩 다시 확인
- *:11434 로 모든 ip 연결 허용
1ubuntu@a1-free:~$ ss -tlnp | grep 11434
2
3# Result
4# LISTEN 0 4096 *:11434 *:*
LLM Model 추천
Oracle Cloud A1 ARM 2OCPU / 12 RAM 기준
| **용도 | 모델 | 추천도 | 속도** | **Tool Calling | 한국어 | 메모리 | 비고** |
|---|---|---|---|---|---|---|---|
| 🥇 채팅 + Tool 겸용 | Qwen3:4B | ⭐⭐⭐⭐⭐ | ★★★★☆ | ★★★★★ | ★★★★★ | 4~5GB | 가장 추천 |
| 채팅 전용 | Gemma3:4B | ⭐⭐⭐⭐☆ | ★★★★★ | ★★★☆☆ | ★★★★☆ | 4GB | 빠른 응답 |
| 경량 | Llama3.2:3B | ⭐⭐⭐⭐☆ | ★★★★★ | ★★★☆☆ | ★★★★☆ | 3GB | 가장 가벼움 |
| 고품질(느림) | Qwen3:8B | ⭐⭐⭐☆☆ | ★★☆☆☆ | ★★★★★ | ★★★★★ | 8~10GB | CPU에서는 느림 |
| 개발/코딩 특화 | Qwen3-Coder | ⭐⭐⭐⭐☆ | ★★☆☆☆ | ★★★★★ | ★★★★★ | 큼 | 코딩 전용에 가까움 |
- GPU 없음, 상시 무료 인스턴스
- 위 사양에서는 Qwen3:4B 사용했는데 너무 느려서 못 쓰겠다…
- GPU 없으면 한계가 확실함
- 배치 스케쥴로만 사용해야할 정도
LLM Model 설치
1# chat + tool chain
2ollama pull qwen3:4b
3
4# fast chat
5ollama pull gemma3:4b
LLM 사용
Warm up
1curl -s \
2 -w "\n\nHTTP Status: %{http_code}\nTotal Time : %{time_total}s\n" \
3 http://localhost:11434/api/generate \
4 -d '{
5 "model":"qwen3:4b",
6 "prompt":"hi",
7 "stream":false,
8 "keep_alive":"5m",
9 "options": {
10 "num_predict": 32
11 }
12 }'
프롬프트 실행
1curl -s \
2 -w "\n\nHTTP Status: %{http_code}\nTotal Time : %{time_total}s\n" \
3 http://localhost:11434/api/chat \
4 -d '{
5 "model":"qwen3:4b",
6 "messages":[
7 {
8 "role":"user",
9 "content":"한국어로 대답해줘. 1+1?"
10 }
11 ],
12 "think": false,
13 "stream":false
14 }'
추가 설정
환경 설정 편집
1sudo systemctl edit ollama
필요한 환경 변수 추가
1# 기본 keep alive 시간
2# -1: 무제한
3# example: 10m, 1h, ...
4Environment="OLLAMA_KEEP_ALIVE=-1"
서비스 적용
1sudo systemctl daemon-reload && sudo systemctl restart ollama
관련 글
이 글은 Notion에서 작성되었고 Github Action을 통해 Hugo로 변환되었습니다.
Copyright © plzhans. All Rights Reserved. | Powered by github.com/plzhans/hans-blog