망분리 환경에서 Ollama와 Continue로 로컬 AI 코딩 환경 만들기
모델 내려받기, config.yaml 역할 배분, 사내 서버 공유, 연결 오류 해결
핵심 요약
- Ollama는 클라우드 모델을 쓰지 않는 한 로컬에서만 실행되고, Continue는 모델 반입 후 인터넷 없이 동작한다.
- 모델은 반드시 정확한 태그로 내려받아 config.yaml의 이름과 맞춘다.
- 채팅·편집은 큰 모델, 자동완성은 작은 모델로 roles를 나눈다.
- 공유 서버는 OLLAMA_HOST로 바인딩을 바꾸고 방화벽으로 접근 대역을 제한한다.
금융·공공·제조 현장처럼 외부 인터넷 연결이 제한된 개발 환경에서는 클라우드 기반 AI 코딩 도구를 쓰기 어렵다. 이때 현실적인 선택지는 로컬 모델 실행 도구인 Ollama와, 로컬 모델을 VS Code·JetBrains에 연결하는 Continue 확장을 조합하는 것이다. Ollama FAQ는 클라우드 모델을 쓰지 않는 한 프롬프트와 답변이 외부로 전송되지 않고 전부 로컬에서 실행된다고 설명하고, Continue의 Ollama 가이드는 모델을 내려받은 뒤에는 인터넷 없이 동작한다고 안내한다. Continue와 MCP를 연결하는 방법은 VS Code Continue MCP 연결 글에서 다뤘다.
구성도와 준비물
| 구성 요소 | 역할 | 망분리 환경에서의 준비 |
|---|---|---|
| Ollama | 로컬 모델 실행, http://localhost:11434에서 API 제공 | 설치 파일과 모델 파일을 반입 |
| Continue 확장 | IDE에서 채팅·자동완성·편집 기능 제공 | 확장 패키지(VSIX 등)를 반입해 설치 |
| 채팅용 모델 | 설명·리팩터링 요청 처리 | 메모리에 맞는 크기 선택 |
| 자동완성용 모델 | 입력 중 코드 제안 | 응답 속도를 위해 작은 모델 선택 |
모델 크기는 하드웨어에 맞춰 고른다. Continue 가이드는 자동완성에 가벼운 qwen2.5-coder:1.5b, 코드 작성에 qwen2.5-coder:7b, 도구 호출을 지원하는 채팅 모델로 llama3.1:8b 같은 예를 든다. 큰 모델일수록 메모리를 많이 쓰므로, 같은 머신에서 채팅과 자동완성을 동시에 돌린다면 두 모델의 합계를 고려한다.
1단계: 모델 내려받기와 반입
인터넷이 되는 반입용 PC에서 모델을 받은 뒤 사내 절차에 따라 옮긴다. 가이드는 반드시 정확한 태그까지 지정해 받으라고 강조한다. 태그 없이 받으면 설정 파일의 모델 이름과 맞지 않아 "model not found" 오류가 난다.
# 반입용 PC에서 정확한 태그로 내려받기
ollama pull qwen2.5-coder:7b
ollama pull qwen2.5-coder:1.5b
ollama list
# 모델 저장 위치(기본값)
# macOS: ~/.ollama/models
# Linux: /usr/share/ollama/.ollama/models
# Windows: C:\Users\<사용자>\.ollama\models저장 위치를 바꾸려면 OLLAMA_MODELS 환경 변수를 쓴다. 반입한 모델 폴더를 대상 서버의 같은 경로(또는 OLLAMA_MODELS로 지정한 경로)에 두고 ollama list로 인식 여부를 확인한다. 반입 시 모델 라이선스와 사내 보안 심사 절차를 함께 확인해야 한다.
2단계: Continue config.yaml로 역할 나누기
Continue 설정 파일은 ~/.continue/config.yaml이다. 모델마다 roles로 맡을 기능을 지정한다. 채팅·편집은 큰 모델에, 자동완성은 작은 모델에 맡기는 구성이 기본이다.
name: Offline Local Config
version: 0.0.1
schema: v1
models:
- name: Qwen2.5-Coder 7B
provider: ollama
model: qwen2.5-coder:7b
apiBase: http://localhost:11434
roles:
- chat
- edit
- apply
- name: Qwen2.5-Coder 1.5B
provider: ollama
model: qwen2.5-coder:1.5b
apiBase: http://localhost:11434
roles:
- autocomplete설치된 모델을 자동으로 목록에 띄우려면 model: AUTODETECT를 쓸 수 있다. 에이전트 모드처럼 도구 호출이 필요한 기능을 쓰려면 해당 모델 항목에 capabilities: [tool_use]를 추가하되, 가이드는 일부 모델이 실제로는 도구 호출을 지원하지 않을 수 있다고 경고한다.
3단계: 사내 GPU 서버 하나를 여러 명이 공유하기
개인 PC 성능이 부족하면 GPU 서버 한 대에 Ollama를 띄우고 팀이 함께 쓴다. Ollama는 기본적으로 127.0.0.1:11434에만 바인딩하므로 다른 PC에서 접속하려면 OLLAMA_HOST를 바꿔야 한다.
# Linux(systemd) 서버: 서비스 설정 편집
sudo systemctl edit ollama.service
# 편집 화면에 추가
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
sudo systemctl daemon-reload
sudo systemctl restart ollama각 개발자의 config.yaml에서는 apiBase를 서버 주소(예: http://10.0.0.20:11434)로 바꾼다. 로컬 요청에는 API 키가 필요 없으므로, 서버를 열 때는 방화벽으로 접근 가능한 사내 대역을 제한해야 한다. 기본 컨텍스트 길이는 4096토큰이며 OLLAMA_CONTEXT_LENGTH로 늘릴 수 있지만 메모리 사용량도 함께 늘어난다.
자주 나는 오류와 해결
| 증상 | 원인 | 해결 |
|---|---|---|
| connection refused | Ollama 미실행 또는 방화벽 | ollama ps로 상태 확인, 11434 포트 허용 여부 점검 |
| 404 model not found | 태그 없이 내려받아 이름 불일치 | ollama pull 모델:태그로 다시 받고 config와 이름 일치 |
| 메모리 부족·응답 중단 | 모델이나 컨텍스트가 하드웨어보다 큼 | contextLength 축소 또는 작은 모델 사용 |
| 에이전트 모드 미동작 | 모델이 도구 호출 미지원 | capabilities: [tool_use] 확인, 도구 지원 모델로 교체 |
설치 후 동작을 확인하는 순서
- 서버에서
curl http://localhost:11434로 Ollama가 응답하는지 확인한다. ollama list에 config.yaml에 적은 모델 이름과 태그가 그대로 있는지 대조한다.- IDE에서 Continue 채팅 창을 열고 모델 선택 목록에 등록한 모델이 보이는지 확인한다.
- 짧은 함수 설명을 요청해 채팅 모델이 응답하는지 본다.
- 코드 파일에서 입력을 멈췄을 때 자동완성 제안이 나타나는지 확인하고, 지연이 크면 더 작은 모델로 바꾼다.
- 네트워크를 차단한 상태에서 위 과정을 다시 실행해 외부 연결 없이 동작하는지 최종 확인한다.
로컬 모델은 클라우드 모델보다 작아 긴 맥락이나 복잡한 설계에서 품질 차이가 날 수 있다. 자동완성과 짧은 설명, 반복 코드 생성처럼 범위가 좁은 작업부터 맡기고, 생성 코드는 AI 생성 코드 테스트 워크플로우로 검증한다.
초보자가 자주 실수하는 포인트
- 태그 없이 모델을 받아 404 model not found 오류가 나는 경우
- 자동완성에 큰 모델을 써서 입력 지연이 심해지는 경우
- OLLAMA_HOST를 0.0.0.0으로 열고 방화벽 제한을 하지 않는 경우
- 모델 라이선스와 반입 심사 절차를 확인하지 않는 경우
체크리스트
- 모델을 정확한 태그로 받아 ollama list에 표시되는가
- config.yaml에서 chat과 autocomplete 모델을 분리했는가
- apiBase가 실제 Ollama 주소와 일치하는가
- 공유 서버의 접근 대역을 방화벽으로 제한했는가
- 모델 라이선스와 사내 반입 절차를 확인했는가
자주 묻는 질문
Continue가 외부로 데이터를 보내지 않나요?
Ollama 모델만 설정했다면 모델 요청은 로컬 또는 사내 서버로 간다. 확장 자체의 다른 네트워크 기능은 설치 버전의 설정과 문서를 확인하고 필요하면 끈다.
Ollama 서버에 인증을 걸 수 있나요?
로컬 요청에는 API 키가 필요 없다. 사내 공유 시에는 방화벽 대역 제한이나 인증 기능이 있는 리버스 프록시를 앞에 두는 방식으로 보완한다.
임베딩 모델도 로컬로 쓸 수 있나요?
Continue는 roles에 embed를 지원하므로 Ollama의 임베딩 모델을 같은 방식으로 등록할 수 있다.
참고 자료 · 검증 기준
위 자료와 내용을 대조한 날짜: . 도구·서비스 정책은 이후 바뀔 수 있으므로 적용 전 공식 문서를 다시 확인하세요.
이 글은 위 참고 자료를 바탕으로 정리했으며, 내용은 운영 과정에서 순차적으로 보완될 수 있습니다.