One-line Installation (Recommended)
Overview
This is the fastest way to install the PlantPulse Platform with a single command. It downloads an installation script from the download server and automatically performs OS setup, Docker installation, firewall configuration, and Docker Compose stack startup.
When should you use this? This is suitable when you want a quick installation with default settings on a standard environment (Oracle Linux 8 / RHEL 9 / Ubuntu 20.04+ / Amazon Linux 2023). For production environments where you need to review detailed settings step by step, we recommend the manual installation procedure on the Docker Installation page.
Choosing an Installation Mode
Before installing, decide which configuration you want to install first.
| Configuration | Number of servers | Recommended for | Guide |
|---|---|---|---|
| Single box (FULL) — default | 1 (256GB recommended, 128GB minimum) | Standard configuration. Follow the procedure on this page as-is | This page |
| 2-node split (DATALAKE/APP) | 2 (64GB + 48GB) | When a single server lacks memory, or you want to separate the data load from the console | 2-Node Split Installation |
| Air-gapped network (Airgap) | — | Environments without internet connectivity | Air-gapped network section of Docker Installation |
The procedure below is for a single box (FULL) setup. Running it without environment variables installs FULL.
Supported Environments
| OS | Version |
|---|---|
| Oracle Linux | 8.x |
| RHEL / Rocky Linux | 8.x, 9.x |
| Ubuntu | 20.04+ (20 / 22 / 24) |
| Amazon Linux | 2, 2023 |
Prerequisites
- A server with internet access (access to the download server
product.kopens.iois required) rootprivileges- Minimum 16 vCPU / 64GB RAM / 200GB disk (default 32 vCPU / 128GB RAM · 256GB RAM recommended for production)
The one-line installation cannot be used in an air-gapped network environment. Please refer to the air-gapped installation procedure on the Docker Installation page.
Running the Installation
SSH into the server and run the command below.
sudo -i
curl -fsSL https://product.kopens.io/plantpulse-platform/install.sh | bash
Tasks the script performs automatically:
- Automatic OS detection (RHEL/Rocky/Oracle 8·9, Ubuntu 20+, Amazon Linux)
- Docker Engine + Compose v2 installation and daemon configuration (data-root)
- Kernel / resource tuning (
limits.conf,sysctl.conf,chrony.conf,tmpfiles.d) - Switching SELinux to permissive and disabling swap
- Automatic firewall port opening — public ports (80/443/7443/4949/4950) and private-network-restricted ports
- Creating the service credential sidecar (
/etc/kopens/plantpulse-platform.env) - Logging in to the container registry (
docker.kopens.io) - Creating Docker networks / volumes, then starting the compose stack
Once installation is complete, nine containers are defined, of which eight run continuously — infrastructure (plantpulse-datalake), six apps (plantpulse-server-web · plantpulse-batch-web · plantpulse-warehouse · plantpulse-plugin-opcua-server · plantpulse-plugin-aasx-server · plantpulse-ha), and edge (plantpulse-proxy). The remaining one (plantpulse-certs) is a one-shot container that bakes TLS material and then exits, so Exited (0) is normal.
For details on the configuration, see Docker Installation — Stack Shape.
After starting the stack, the installation script polls until it is ready. While process startup itself takes 3–5 minutes (JVM warm-up), a clean install takes 15–18 minutes for all components to stabilize due to Cassandra schema migration and stabilization. Restarts are much faster since the schema already exists.
Installation Options
# Docker가 이미 설치된 경우 OS 셋업 단계 생략
curl -fsSL https://product.kopens.io/plantpulse-platform/install.sh | bash -s -- --skip-os
| Option | Effect |
|---|---|
--skip-os | Skips OS setup and Docker installation (when Docker is already installed) |
Note: Because the one-line installation automatically configures registry authentication, no separate
docker loginis needed. To skip the firewall (SKIP_FW=1), skip registry login (SKIP_LOGIN=1), or change the Docker data-root path (DOCKER_DATA_DIR, default/data1/docker-data), specify these as environment variables when runningbin/install.shdirectly after downloading it to the node → Docker Installation
Verifying the Installation
Once the installation is complete, check the status with the command below.
cd /opt/kopens/plantpulse-platform-docker/bin
./status.sh # 0 = 정상 / 2 = 비정상
./ops-check.sh
curl -kfsS https://<server-ip>:4950/api/health | jq # "status":"OK" 또는 "WARN" 이면 정상
docker ps # 여덟 개가 (healthy), plantpulse-certs 는 Exited (0)
plantpulse-platform in docker ps does not mean it failedThe single-container configuration with that name has been deprecated. The container names are the nine listed above, and the docker logs plantpulse-platform from old runbooks will not work. Check logs with ./logs.sh.
Once everything looks normal, access the web console from a browser.
https://[서버IP] # 웹 콘솔 (80/443, plantpulse-proxy 가 받습니다)
https://[서버IP]:7443 # 관리 UI
https://[서버IP]:4950 # 모니터 UI
- Default admin account: admin / admin123!
- Be sure to change the password after logging in. → Initial Password
Adjusting Environment Variables After Installation
Because the one-line installation inspects the host and automatically calculates resource values, most servers require no adjustment. You only need to adjust values that cannot be determined automatically, such as locale.
cd /opt/kopens/plantpulse-platform-docker/bin
vi env.sh
./restart.sh
Commonly adjusted items:
| Variable | Description | Default |
|---|---|---|
PP_LANG | Platform locale (ko / en) | en — ko for Korean-language operations |
PP_TZ | Platform timezone | Asia/Seoul |
DOCKER_PP_CPUS | Number of vCPUs allocated to containers | Result of nproc (automatic) |
DOCKER_PP_MEMORY | Memory limit | 90% of host RAM (automatic) |
DOCKER_DATALAKE_MEMORY | Data lake memory limit | 80G, or 90% of RAM if the host is small |
DOCKER_PP_DATA_DISK_NAME | Data disk name | Automatically traced back (falls back to sda on failure) |
DOCKER_PP_EXTERNAL_IP | External advertise IP for NAT environments | Empty — leave blank if not behind NAT |
DOCKER_PP_EXTERNAL_IPThis value is included in the SAN list of the TLS certificate. If an invalid IP is entered, not a single certificate will be generated, and the stack will fail to start.
Multi-language boxes: The default locale is
en. For Korean-language environments, change it toPP_LANG=koand apply it with./restart.sh. However, since Cassandra time series data is stored using KST epoch,Asia/Seoulmust be kept for Korean operations.
For the full list of environment variables, see the Environment Variable Reference.
Frequently Used Operational Commands
cd /opt/kopens/plantpulse-platform-docker/bin
./preflight.sh # 설치 전 비파괴 사전 점검
./up.sh # 기동 — 준비될 때까지 대기 (0 = 준비 완료)
./down.sh # 정지 (상태 보존)
./restart.sh # graceful 재시작 (drain + 준비 대기)
./status.sh # 서비스 / health / 볼륨 요약 (0=정상 / 2=비정상)
./logs.sh [서비스] # 로그 보기 (1회 출력, -f 로 따라가기). 인자가 없으면 전체, 목록은 --list
./shell.sh [서비스] # 컨테이너 bash 진입 (인자 없으면 데이터레이크)
./ops-check.sh # 운영 health + 최근 critical log 점검
./update.sh # 이미지 갱신 (pull + recreate + 실패 시 rollback)
./remove.sh # 컨테이너 제거 (볼륨은 보존)
./doctor.sh # 장애 진단 tarball 생성
All verbs support --help. The old names (stack-run.sh · stack-stop.sh · stack-bash.sh · stack-update.sh · stack-remove.sh) also still work.
Troubleshooting
Download script fails to run
# 다운로드 서버 접근 가능 여부 확인
curl -fsSL https://product.kopens.io/plantpulse-platform/install.sh -o /tmp/install.sh
ls -al /tmp/install.sh
# 회사 방화벽 / 프록시로 차단된 경우 네트워크 관리자에게 도메인 허용 요청:
# product.kopens.io, docker.kopens.io
Containers do not transition to healthy status
First narrow down which container is the problem.
cd /opt/kopens/plantpulse-platform-docker/bin
./status.sh # 어떤 서비스가 비정상인가
./logs.sh --list # 볼 수 있는 서비스 목록
./logs.sh plantpulse-server-web -n 200 # 그 컨테이너의 로그
./doctor.sh # 진단 tarball 생성 후 기술 지원팀에 전달 (모든 컨테이너를 담습니다)
This is likely due to a Cassandra schema migration failure or a /data1/pp-data permission issue. For detailed steps, see Docker Installation — When the Stack Fails to Start.
Further inquiries
For other issues, please first check the Troubleshooting section on the Docker Installation page. If the issue remains unresolved, please contact webmaster@kopens.com.