Skip to main content

One-Line Installation (Recommended)

Overview​

This is the fastest way to install the PlantPulse Platform with a single command. It retrieves the installation script from the download server and automatically performs OS setup, Docker installation, firewall configuration, and Docker Compose stack startup.

When to use? This is ideal for quick installations with default settings in standard environments (Oracle Linux 8 / RHEL 9 / Ubuntu 20.04+ / Amazon Linux 2023). For production environments where detailed settings must be reviewed step-by-step, we recommend the manual installation procedure on the Docker Installation page.

Select Installation Mode​

Decide on the installation configuration before proceeding.

ConfigurationNumber of ServersRecommended ScenarioGuide
Single Box (FULL) — Default1 unit (Rec. 256GB, Min 128GB)Standard configuration. Follow this page's procedureThis page
Air-gapped Network (Airgap)—Environments without internet connectionAir-gapped Installation

The following procedure is based on the Single Box (FULL) configuration. If executed without environment variables, it will install as FULL.

Supported Environments​

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

Prerequisites​

  • Server with internet access (access to download server product.kopens.io required)
  • root privileges
  • Minimum 16 vCPU / 128GB RAM / 1TB SSD (Production Rec. 32 vCPU / 256GB RAM) — At least 96GB must be allocatable to the Data Lake Master; 64GB is not a supported specification (System Requirements)

One-line installation cannot be used in air-gapped network environments. Please refer to the procedure on the Air-gapped Installation page.

Execute Installation​

Connect to the server via SSH and execute the following command.

sudo -i
curl -fsSL https://product.kopens.io/plantpulse-platform/install.sh | bash
⌨️ Platform One-Line Installation — Actually recorded on a staging server

Tasks automatically performed by the script:

  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. Transitioning SELinux to permissive and disabling swap
  5. Automatic firewall port opening — Public ports (80/443/4949/4950) and private network restricted ports
  6. Creation of service credential sidecar (/etc/kopens/plantpulse-platform.env)
  7. Container registry (docker.kopens.io) login
  8. Docker network / volume creation and compose stack startup
Expected Outcome

Once installation is complete, nine containers will be running continuously — Certificate (plantpulse-certs), Infrastructure (plantpulse-datalake), six Apps (plantpulse-server-web · plantpulse-batch-web · plantpulse-warehouse-web · plantpulse-plugin-opcua-server · plantpulse-plugin-aasx-server · plantpulse-ha), and Edge (plantpulse-proxy).

For detailed configuration, refer to Docker Installation — Installation Layout.

The installation script polls until the stack is ready after startup. While the process startup itself takes 3 to 5 minutes (JVM warmup), a clean installation takes 15 to 18 minutes for all components to stabilize due to Aster TSDB schema migration and stabilization. Restarts are significantly faster as 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 (if Docker is already installed)

Note: One-line installation automatically configures registry authentication, so separate docker login is not required. Firewall omission (SKIP_FW=1), registry login omission (SKIP_LOGIN=1), and Docker data-root path changes (DOCKER_DATA_DIR, default /data1/docker-data) are specified as environment variables when manually executing bin/install.sh downloaded to the node → Docker Installation

Verify Installation​

After installation is complete, verify the status with the following command.

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)
Failure is not indicated by the absence of plantpulse-platform in docker ps

The single container configuration by that name has been deprecated. The nine items below appear in a default installation.

plantpulse-certs · plantpulse-datalake · plantpulse-server-web · plantpulse-batch-web · plantpulse-warehouse-web · plantpulse-plugin-opcua · plantpulse-plugin-aasx · plantpulse-ha · plantpulse-proxy

The tenth item, plantpulse-mirror-maker, does not appear by default — it only appears when activated via the compose mirror profile. It is normal for it to be invisible → Utility Modules

The docker logs plantpulse-platform from the old runbook does not work. View logs using ./logs.sh.

If all items are normal, access the web console via a browser.

https://[서버IP] # 웹 콘솔 (80/443, plantpulse-proxy 가 받습니다)
https://[서버IP] # 관리 UI (웹 콘솔과 같은 주소)
https://[서버IP]:4950 # 모니터 UI
  • Default Admin Account: admin / admin123!
  • Please ensure you change the password after logging in. → Initial Password

Post-Installation Environment Variable Adjustment​

Since one-line installation automatically calculates resource values based on the host, no adjustments are needed for most servers. You only need to adjust values that cannot be determined automatically, such as locales.

The place to modify is the sidecar file.

vi /etc/kopens/plantpulse-platform.env
cd /opt/kopens/plantpulse-platform-docker/bin && ./restart.sh

Write each entry as 이름=값 per line.

PP_LANG=ko
DOCKER_PP_EXTERNAL_IP=203.0.113.10
Do not modify bin/env.sh — it will be deleted during re-installation

The installation script deletes the entire installation tree and re-downloads it. /opt/kopens/plantpulse-platform-docker Any manually written values below will be lost during re-installation or upgrade.

The sidecar /etc/kopens/plantpulse-platform.env exists outside the installation tree and survives. It is created during installation and its permission is 0600.

The order of value precedence is as follows:

OrderLocationRemarks
1Sidecar /etc/kopens/plantpulse-platform.envOverrides the default values below. Modify here
2Default value of bin/env.shProduct-defined value
3Explicit export line at the bottom of bin/env.shRead last and overrides others, but lost during re-installation

Frequently adjusted items:

VariableDescriptionDefault Value
PP_LANGPlatform locale (ko / en)en — Use ko for Korean 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 limit96G (Minimum), not exceeding 90% of host RAM — Below 107G host is underspec
DOCKER_PP_DATA_DISK_NAMEData disk nameAutomatic traceback (If failed, sda)
DOCKER_PP_EXTERNAL_IPExternal advertise IP in NAT environmentEmpty — Leave empty if not behind NAT
Do not fill DOCKER_PP_EXTERNAL_IP carelessly

This value is entered into the SAN list of the TLS certificate. Entering an invalid IP will prevent any certificates from being generated, meaning the stack will fail to start.

The default locale is en. To operate in Korean, enter PP_LANG=ko in the sidecar and apply it as ./restart.sh. Since time series data is loaded based on KST, maintain PP_TZ as Asia/Seoul for Korean operations.

For the full list of environment variables, refer to the Environment Variable Reference.

Common 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 점검
./remove.sh # 컨테이너 제거 (볼륨은 보존)
./doctor.sh # 장애 진단 tarball 생성

When deploying a new version, execute this one-liner again — Upgrade. All verbs support --help. Old names (stack-run.sh · stack-stop.sh · stack-bash.sh · stack-update.sh · stack-remove.sh) also continue to work.

Troubleshooting​

Download Script Execution Failure​

# 다운로드 서버 접근 가능 여부 확인
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

Container Fails to Transition to Healthy State​

First, narrow down which container is causing the issue.

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 an Aster TSDB schema migration failure or /data1/pp-data permission issues. Detailed procedures are available in Docker Installation — If Stack Does Not Start.

Additional Inquiries​

For other issues, please check the troubleshooting section of the Docker Installation page first. If the issue persists, contact webmaster@kopens.com.