infra/onprem/docker-compose.yml 은 데스크톱 앱이 그대로 실행하는 compose 파일입니다. 데스크톱 셸 없이 Nora 를 서버나 VM 에서 돌리고 싶다면 이 파일에 직접 대세요.
사전 조건
- Docker Engine 20.10+ (
docker --version). - Docker Compose plugin (
docker compose version). - 디스크 여유 약 15 GB — 컨테이너 이미지와 Postgres 볼륨을 담을 공간.
- Docker 에 4 GB RAM 이상 할당 (8 GB 권장).
빠른 시작
1
env 템플릿 복사
2
POSTGRES_PASSWORD 설정
실제 비밀번호가 있어야 compose 가 부팅됩니다.
.env.onprem 을 열고 CHANGE_ME_postgres_password 를 실제 자격증명으로 바꾸세요. compose 파일에 접근할 수 있는 누구든 이 값을 읽을 수 있으므로 실 자격증명으로 다루어야 합니다.3
스택 up
http://localhost:8090 에서 Nora 가 서빙됩니다. 첫 부팅에서 SQL 마이그레이션이 자동으로 실행됩니다.스택 구성
내부 Docker 네트워크에 다섯 개 서비스가 뜹니다. 호스트 포트를 publish 하는 건nora-server 하나입니다.
이미지 해석 순서
nora-server 와 nora-llm-bridge 는 같은 순서로 이미지를 해석합니다.
- 이미지가 이미 로컬에 있으면 (tarball 로 load 했거나 이전
up이 빌드한 결과) compose 가 그대로 사용합니다. - 로컬에 없지만 레지스트리에 닿을 수 있으면 GHCR 에서 pull 합니다.
- 둘 다 아니면 폴백
build:블록으로 소스에서 빌드합니다. 최초 소스 빌드는 브릿지는 약 2 분, 서버는 15 – 30 분 걸립니다.
NORA_IMAGE_REGISTRY 를 세팅합니다. 에어갭 운영자가 tarball 을 사내 미러에 load 한 경우에 유용합니다.
필수 환경 변수
필수는 하나뿐입니다. 나머지는 합리적인 기본값이 있습니다.POSTGRES_PASSWORD— 번들된 Postgres 컨테이너의 superuser 비밀번호입니다. 실제 값 없이는 compose 가 부팅되지 않습니다.
OAuth · SSO 자격증명은 그대로 통과합니다:
GOOGLE_OAUTH_CLIENT_ID · GOOGLE_OAUTH_CLIENT_SECRET, GITHUB_OAUTH_CLIENT_ID · GITHUB_OAUTH_CLIENT_SECRET, 그리고 ANTHROPIC_API_KEY 같은 프로바이더 API 키.
laptop 래퍼
compose 플래그를 매번 외우기 싫다면infra/onprem/nora-laptop.sh 가 같은 스택에 대한 친절한 표면을 제공합니다.
데이터 위치
pgdata볼륨 은 Postgres 데이터를 담습니다 — 워크스페이스, 플로우, 메모리, 트레이스 등 모든 트랜잭션 상태.qdrantdata볼륨 은 Qdrant 벡터 인덱스를 담습니다.NORA_VECTOR_STORE=qdrant일 때만 사용됩니다..env.onprem은 여러분의 설정을 담습니다.
docker volume inspect nora-onprem_pgdata 로 드라이버가 마운트한 경로를 확인할 수 있습니다.
업그레이드
1
새 태그로 지정
2
pull 후 재시작
언인스톨
docker image prune 으로 처리하세요.
관련
에어갭 tarball
같은 compose 파일과 이미지를 하나의 아카이브에 담습니다.
Kubernetes (Helm)
같은 5 서비스를 인그레스 · TLS 가 붙은 클러스터로.
데스크톱 앱
이 compose 파일을 네이티브 창으로 감쌉니다.