모델을 어디서 돌릴지 정하기

셀프호스팅 / 배포 경로

모델이 어디서 도는지 정하고 시작하세요

설치와 기동은 명령 하나로 끝납니다. 이 페이지의 나머지는 그 명령이 무엇을 했고 어디를 바꾸면 되는지에 대한 설명입니다. 첫 결정은 설정값이 아니라 모델을 누가 운영하느냐입니다.

모델을 어디서 돌릴지 정하기

어느 쪽이든 같은 OpenMake를 띄우지만, 호스팅 데모는 운영을 맡겨 두고 셀프호스팅은 애플리케이션과 모델 엔드포인트, 배포 경계를 직접 운영합니다.

  • 호스팅 엔드포인트 — 빠르게 확인할 수 있고 GPU를 돌볼 필요도 없지만, 보낸 요청은 모델 공급자가 보게 됩니다
  • 셀프호스팅 엔드포인트 — vLLM과 LiteLLM을 직접 돌리는 대신 네트워크도 자격 증명도 모델 목록도 전부 우리가 쥡니다
다음머신에 필요한 것

머신에 필요한 것

Node 24와 Docker입니다. PostgreSQL과 Redis는 infra/docker-compose.yml의 컨테이너로 돕니다. Homebrew로 띄운 Postgres는 더 이상 지원하지 않으며, 설치 스크립트가 둘 다 알아서 올립니다. API는 52416 포트, 웹은 3000 포트를 씁니다.

macOS에서는 Docker Desktop, OrbStack, Colima 모두 됩니다. Windows에서는 전부 WSL2 안에서 하세요. 네이티브 Windows 셸을 감지하면 설치 스크립트가 진행하는 대신 WSL2 준비 절차를 안내합니다.

다음명령 하나로 설치하기

명령 하나로 설치하기

클론할 필요가 없습니다. 저장소 밖에서 실행하면 스크립트가 소스를 ~/openmake_llm 으로 받아 온 뒤 그 안에서 자기를 다시 실행합니다. bash로 파이프해도 /dev/tty로 질문하고, CI처럼 터미널이 없으면 자동 승인합니다.

물어보는 것은 하나뿐입니다. 어떤 OpenAI 호환 LLM 엔드포인트를 쓸 것인가. 끝나면 웹 주소와 생성된 관리자 비밀번호를 출력합니다. 다시 실행해도 안전합니다. 덮어쓰는 게 아니라 모자란 것만 고칩니다.

  • toolchain을 점검하고 없는 것을 설치합니다 — Node, Docker, PM2. 가능한 곳에서는 sudo 없이 합니다
  • 비밀 값을 새로 뽑아 .env를 만듭니다. JWT_SECRET, API_KEY_PEPPER, TOKEN_ENCRYPTION_KEY를 예제에서 베껴 오는 일이 없습니다
  • PostgreSQL과 Redis를 띄우고, 마이그레이션을 전부 적용하고, 두 앱을 빌드해 PM2로 올린 뒤 /health를 기다립니다
  • --skip-docker는 Postgres와 Redis를 직접 운영할 때 씁니다. --postgres-port와 --redis-port는 5432·6379를 두고 다투는 대신 컨테이너를 옆으로 옮깁니다
shell
curl -fsSL https://raw.githubusercontent.com/openmake/openmake_llm/main/install.sh | bash

# 비대화형 — 엔드포인트를 미리 넘기는 경우
curl -fsSL https://raw.githubusercontent.com/openmake/openmake_llm/main/install.sh | bash -s -- --yes \
  --llm-base-url https://openrouter.ai/api/v1 --llm-api-key sk-or-... --llm-model qwen/qwen3-235b-a22b
다음게이트웨이 설정 확인하기

게이트웨이 설정 확인하기

아래 값들은 설치 스크립트가 대신 써 줍니다. 여기 적은 것은 나중에 다시 읽고 조정할 자리입니다. 환경 변수 이름과 모델 ID, 명령줄은 번역 대상이 아니라 그대로 쓰는 값입니다.

나머지는 .env.example을 기준으로 삼으세요. .env를 손으로 채운다면 예제 비밀 값을 옮기지 말고 새로 생성하세요.

shell
LLM_BASE_URL=http://localhost:4000
LLM_DEFAULT_MODEL=qwen3.8-27b
LLM_POOL_DEFAULT_CTX=262144
DATABASE_URL=postgresql://openmake:your_password@localhost:5432/openmake_llm
JWT_SECRET=$(openssl rand -hex 32)
API_KEY_PEPPER=$(openssl rand -hex 32)
ADMIN_PASSWORD=강한_관리자_비밀번호로_교체
TOKEN_ENCRYPTION_KEY=$(openssl rand -hex 32)
다음띄우고 확인하기

띄우고 확인하기

설치가 끝나면 서비스는 이미 돌고 있습니다. 그 뒤에 필요한 명령이 아래입니다. openmake_llm.sh가 세 계층을 순서대로 올리고 — PostgreSQL, Redis, 그다음 PM2 위의 앱 — 내릴 때는 역순으로 내립니다.

서버는 뜰 때 밀린 마이그레이션을 먼저 적용하므로 첫 부팅은 조금 더 걸립니다. 확인은 프로세스가 살아 있는지가 아니라, 실제 사용자가 지나갈 길을 그대로 따라가 보는 쪽이 낫습니다.

  • API와 웹 프로세스가 둘 다 살아 있는지 보기
  • 로그인해서 설정한 모델이 입력창에 뜨는지 보기
  • 메시지를 하나 보내 원하던 모델에서 답이 오는지 보기
  • 사용량 화면에 그 요청이 찍혔는지 보기
shell
./openmake_llm.sh status     # 모든 계층 상태를 한 번에
./openmake_llm.sh health     # /health 응답 확인
./openmake_llm.sh logs       # 실시간 로그
./openmake_llm.sh start      # 재부팅한 뒤
./openmake_llm.sh deploy     # 코드를 바꾼 뒤 — build + migrate + restart
첫 메시지가 제대로 돌아오는 순간이 진짜 설치 확인입니다. 입력창이 모델 이름을 알려 주고, 답변도 그 길로 돌아옵니다.
다음직접 단계별로 하고 싶다면

직접 단계별로 하고 싶다면

수동 경로도 그대로 됩니다. 배포를 우리 환경에 맞게 손볼 생각이라면 알아 둘 값어치가 있습니다. 설치 스크립트가 자동으로 하는 것과 같은 순서이고, toolchain 점검과 비밀 값 생성만 빠집니다.

shell
git clone https://github.com/openmake/openmake_llm.git
cd openmake_llm
node --version              # 24.x 필요
npm install
cp .env.example .env        # 위의 값들을 채운다
docker compose -f infra/docker-compose.yml up -d
./openmake_llm.sh build
./openmake_llm.sh migrate
./openmake_llm.sh start
다음미리 정해 둘 것들

미리 정해 둘 것들

화면이 아니라 운영 방식 자체를 바꾸는 스위치가 몇 개 있습니다. 사용자를 부르기 전에 정해 두는 편이 좋습니다.

스킬 자동 선택은 기본이 꺼짐입니다. SKILL_AUTO_SELECT_ENABLED=true로 둬야 채팅과 에이전트 작업이 스킬을 알아서 고릅니다. 외부 공급자 키는 선택 사항으로 남겨 두고 로컬 기본 경로와 섞지 마세요.

  • DB_AUTO_MIGRATE=false — 마이그레이션을 손으로 돌려야 할 때 부팅 시 자동 적용을 끕니다
  • SKILL_AUTO_SELECT_ENABLED=true — 채팅과 에이전트 작업의 스킬 자동 선택을 켭니다
  • 외부 공급자 키는 사용자별로 등록하거나, 하루 토큰 한도를 건 운영자 키를 팀이 함께 씁니다
  • ./openmake_llm.sh update — git pull, 빌드, 마이그레이션, 재시작. 커밋되지 않은 변경이나 갈라진 커밋이 있으면 손대지 않고 멈춥니다
  • ./uninstall.sh — 설치 스크립트가 만든 것을 역순으로 지웁니다. --keep-data는 데이터베이스 볼륨을 남깁니다
토큰을 모델별로 나눠 보여 주니, 트래픽이 로컬에 머물고 있는지 한눈에 알 수 있습니다.