원라인 설치 (권장)
인터넷이 되는 서버라면 명령 한 줄로 설치가 시작됩니다. 설치 스크립트는 배포
서버 product.kopens.io 에서 받아옵니다.
curl -fsSL https://product.kopens.io/plantpulse-ai/install.sh | sudo bash
폐쇄망이라면 이 경로를 쓸 수 없습니다 → 폐쇄망 설치.
시작하기 전에
| 확인할 것 | 내용 |
|---|---|
| 권한 | root 로 실행해야 합니다 (sudo bash) |
| 네트워크 | product.kopens.io · docker.kopens.io 에 HTTPS 접근 가능 |
| 하드웨어 | GPU 포함 요구사항 → 시스템 요구사항 |
무엇을 받아오나 — 저장소 셋
AI 스택의 compose 는 세 저장소가 나란히 있어야 뜹니다.
/opt/kopens/
├── plantpulse-ai-docker/ ← 설치 본체
├── plantpulse-ai-inference-server/
└── plantpulse-timeseries-insight-server/
원라인 설치는 이 셋을 담은 번들(plantpulse-ai-bundle.tar.gz)을 받아 한꺼번에 풀어 줍니다.
따로 준비할 것이 없습니다. 스크립트는 푼 뒤에 셋이 다 왔는지 확인하고, 하나라도 빠지면
그 이름을 찍고 다른 경로로 넘어갑니다 — 반쪽으로 뜨는 일이 없게 막는 장치입니다.
GIT_USER · GIT_TOKEN 을 주면 번들 대신 dev.kopens.io 에서 git clone 합니다.
고객사에는 우리 GitLab 계정이 없으므로 기본은 번들입니다.
값을 지정해서 설치하기
환경 변수는 bash 앞에 둡니다. curl 앞에 두면 파이프를 타고 넘어가지 않습니다.
curl -fsSL https://product.kopens.io/plantpulse-ai/install.sh \
| sudo START=1 PP_DATALAKE_ADMIN_URL=https://192.168.0.41:4950 PP_DATALAKE_ADMIN_API_KEY=<플랫폼의 키> bash
빈 값을 하나씩 물어보게 하려면 대화형으로 실행하세요.
curl -fsSL https://product.kopens.io/plantpulse-ai/install.sh | sudo INTERACTIVE=1 bash
| 환경 변수 | 기본값 | 용도 |
|---|---|---|
INTERACTIVE | 0 | 1 이면 빈 값을 프롬프트로 물어봅니다 |
START | — | 1 이면 설치 후 바로 기동합니다 |
DEST | /opt/kopens/plantpulse-ai-docker | 설치 위치 |
BRANCH | master | 받아올 브랜치 |
REPO_HOST | (사내 Git 호스트) | 배포본을 못 받았을 때만 쓰는 대체 경로. 값은 설치 스크립트에 들어 있습니다 |
REPO_PATH | plantpulse-ai/plantpulse-ai-docker.git | 저장소 경로 |
GIT_USER · GIT_TOKEN | — | 사설 저장소 인증 |
설치 스크립트(install.sh)로 그대로 넘어가는 값도 같은 자리에 둡니다. 자주 쓰는 것만 추렸습니다 —
전체와 각 단계가 하는 일은 설치 개요 에 있습니다.
| 환경 변수 | 기본값 | 용도 |
|---|---|---|
PP_DATALAKE_ADMIN_URL · PP_DATALAKE_ADMIN_API_KEY | — | 플랫폼 자격증명을 받을 주소(https://<플랫폼 호스트>:4950)와 키. 주면 묻지 않습니다 |
PP_PROXY_CERT_SAN | 이 호스트의 주소 | TLS 인증서에 넣을 접속 주소·이름(쉼표로 여럿). 공인 IP · VIP · 도메인으로 접속한다면 반드시 줍니다. env 파일에 이미 적힌 값은 다시 설치해도 유지됩니다 |
ENV_TEMPLATE | env.gb10.example | AWS g7e(amd64)는 env.g7e.example. 기계와 아키텍처가 어긋나면 멈춥니다 |
HOST_TUNING | apply (다른 컨테이너가 돌면 plan) | 호스트 전역 설정을 skip · plan · apply 중 어떻게 할지 |
ALLOW_DOCKER_RECONFIGURE | — | 1 이면 원래 있던 Docker 의 설정 변경 · 재시작을 허용합니다 |
SKIP_GPU | — | 1 이면 NVIDIA 드라이버 · toolkit 설치를 건너뜁니다 |
SKIP_WAIT · WAIT_READY_MIN | — · 15 | START=1 뒤 응답 대기를 건너뛰거나 상한(분)을 바꿉니다 |
INTERACTIVE=1 이면 TLS 인증서 SAN 을 먼저 묻고, 이어서 플랫폼 자격증명을 받을 주소와 키
(PP_DATALAKE_ADMIN_URL · PP_DATALAKE_ADMIN_API_KEY)를 묻습니다. 그래도 남은 자리표시자(플랫폼 API 토큰 ·
관리자 비밀번호 · Neo4j 비밀번호 등)는 하나씩 더 묻습니다. 플랫폼 호스트와 플랫폼 PG · Aster TSDB · Redis 계정 ·
비밀번호는 2026.10 부터 묻지 않습니다 — 호스트는 위 주소에서 계산되고, 계정 · 비밀번호는 시작할 때 플랫폼에서 받습니다. 내부 비밀(게이트웨이 키 · 솔트 · 인바운드 키 · 세션 비밀 ·
저장 자격증명 암호화 키 등)은 묻지 않고 설치기가 만듭니다.
묻는 값은 대화형 대신 같은 이름의 환경 변수로 넘겨도 됩니다(… | sudo PP_API_TOKEN=<토큰> PI_ADMIN_PASSWORD=<비밀번호> bash).
설치기는 아직 자리표시자인 키만 그 값으로 채우고, 이미 넣은 값은 덮지 않습니다.
플랫폼 신뢰 앵커 /etc/kopens/ca/root.crt(같은 내용을 CA.crt 로도)는 설치기가 만들지 않습니다. START=1 이면
설치기가 이미지를 받기 전에 플랫폼에서 자격증명을 한 번 받아 보고, 앵커가 없거나 키가 틀리면 아무것도 띄우지
않고 멈춥니다. 앵커를 먼저 두고 START=1 로 돌리거나, START 없이 준비까지만 한 뒤 앵커를 두고 띄우십시오 →
설치 개요
설치가 끝나면
- 초기 비밀번호 변경 — 관리 콘솔 계정을 정합니다.
PI_ADMIN_PASSWORD가 자리표시자로 남아 있으면START=1기동이 거부되고, 비어 있으면 콘솔이 아예 뜨지 않습니다. - AI 관리 콘솔 에 접속해 홈에서 전체 상태를 확인합니다.
- 서비스 포트 맵 으로 방화벽을 정리합니다.
- 영상 · 음성 수집과 채팅의 음성으로 묻기를 쓰려면 호스트 env 에
PI_MEDIA_ENABLED=true한 줄을 넣고 녹취 모델을 받습니다 — 기본은 꺼져 있습니다 → 영상 · 음성 수집