Skip to main content

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.

ConfigurationNumber of serversRecommended forGuide
Single box (FULL) — default1 (256GB recommended, 128GB minimum)Standard configuration. Follow the procedure on this page as-isThis 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 console2-Node Split Installation
Air-gapped network (Airgap)Environments without internet connectivityAir-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

OSVersion
Oracle Linux8.x
RHEL / Rocky Linux8.x, 9.x
Ubuntu20.04+ (20 / 22 / 24)
Amazon Linux2, 2023

Prerequisites

  • A server with internet access (access to the download server product.kopens.io is required)
  • root privileges
  • 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:

  1. Automatic OS detection (RHEL/Rocky/Oracle 8·9, Ubuntu 20+, Amazon Linux)
  2. Docker Engine + Compose v2 installation and daemon configuration (data-root)
  3. Kernel / resource tuning (limits.conf, sysctl.conf, chrony.conf, tmpfiles.d)
  4. Switching SELinux to permissive and disabling swap
  5. Automatic firewall port opening — public ports (80/443/7443/4949/4950) and private-network-restricted ports
  6. Creating the service credential sidecar (/etc/kopens/plantpulse-platform.env)
  7. Logging in to the container registry (docker.kopens.io)
  8. Creating Docker networks / volumes, then starting the compose stack
What gets started

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
OptionEffect
--skip-osSkips OS setup and Docker installation (when Docker is already installed)

Note: Because the one-line installation automatically configures registry authentication, no separate docker login is 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 running bin/install.sh directly 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)
Not finding plantpulse-platform in docker ps does not mean it failed

The 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:

VariableDescriptionDefault
PP_LANGPlatform locale (ko / en)enko for Korean-language operations
PP_TZPlatform timezoneAsia/Seoul
DOCKER_PP_CPUSNumber of vCPUs allocated to containersResult of nproc (automatic)
DOCKER_PP_MEMORYMemory limit90% of host RAM (automatic)
DOCKER_DATALAKE_MEMORYData lake memory limit80G, or 90% of RAM if the host is small
DOCKER_PP_DATA_DISK_NAMEData disk nameAutomatically traced back (falls back to sda on failure)
DOCKER_PP_EXTERNAL_IPExternal advertise IP for NAT environmentsEmpty — leave blank if not behind NAT
Do not casually fill in DOCKER_PP_EXTERNAL_IP

This 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 to PP_LANG=ko and apply it with ./restart.sh. However, since Cassandra time series data is stored using KST epoch, Asia/Seoul must 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.