Skip to main content

One-line Installation (Recommended)

If the server has internet access, a single command starts the installation. The installation script is fetched from the distribution server product.kopens.io.

curl -fsSL https://product.kopens.io/plantpulse-ai/install.sh | sudo bash

If you're on an air-gapped network, you can't use this path → Air-gapped Installation.


Before You Start​

CheckDetails
PermissionsMust run as root (sudo bash)
NetworkHTTPS access to product.kopens.io · docker.kopens.io
HardwareFor GPU requirements → System Requirements

What Gets Fetched — the Repository Set​

The AI stack's compose needs three repositories placed side by side to come up.

/opt/kopens/
├── plantpulse-ai-docker/ ← 설치 본체
├── plantpulse-ai-inference-server/
└── plantpulse-timeseries-insight-server/

One-line installation fetches a bundle (plantpulse-ai-bundle.tar.gz) containing all three and unpacks them at once. There's nothing to prepare separately. After unpacking, the script checks that all three arrived, and if any is missing, it prints the name and falls back to another path — this prevents the system from coming up half-deployed.

If you want to fetch directly from internal repositories

Give it GIT_USER · GIT_TOKEN and it will git clone from dev.kopens.io instead of the bundle. Since customer sites don't have our GitLab account, the default is the bundle.


Installing with Specified Values​

Environment variables go before bash. If placed after curl, they won't carry through the pipe.

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

To have it prompt for each unset value individually, run it interactively.

curl -fsSL https://product.kopens.io/plantpulse-ai/install.sh | sudo INTERACTIVE=1 bash
Environment VariableDefaultPurpose
INTERACTIVE0If 1, prompts for unset values
START—If 1, starts up immediately after installation
DEST/opt/kopens/plantpulse-ai-dockerInstallation location
BRANCHmasterBranch to fetch
REPO_HOST(internal Git host)Fallback path used only when the distribution can't be fetched. The value is embedded in the installation script
REPO_PATHplantpulse-ai/plantpulse-ai-docker.gitRepository path
GIT_USER · GIT_TOKEN—Private repository authentication

Values that pass through as-is to the installation script (install.sh) also go in the same place. Only the frequently used ones are listed here — for the full set and what each step does, see Installation Overview.

Environment VariableDefaultPurpose
PP_DATALAKE_ADMIN_URL · PP_DATALAKE_ADMIN_API_KEY—Address (https://<플랫폼 호스트>:4950) and key for retrieving Platform credentials. If given, won't be prompted
PP_PROXY_CERT_SANThis host's addressAccess addresses/names to embed in the TLS certificate (comma-separated for multiple). Must be given if accessed via public IP · VIP · domain. Values already in the env file are kept even on reinstall
ENV_TEMPLATEenv.gb10.exampleAWS g7e (amd64) is env.g7e.example. Stops if machine and architecture mismatch
HOST_TUNINGapply (plan if other containers are running)How to handle host-wide settings among skip · plan · apply
ALLOW_DOCKER_RECONFIGURE—If 1, allows changing/restarting settings of an existing Docker installation
SKIP_GPU—If 1, skips NVIDIA driver/toolkit installation
SKIP_WAIT · WAIT_READY_MIN— · 15Skips waiting for a response after START=1 or changes the timeout (minutes)
Values prompted for in interactive mode

If INTERACTIVE=1, it first asks for the TLS certificate SAN, then asks for the address and key for retrieving Platform credentials (PP_DATALAKE_ADMIN_URL · PP_DATALAKE_ADMIN_API_KEY). Beyond that, remaining placeholders (Platform API token, admin password, Neo4j password, etc.) are asked one by one. From 2026.10, the Platform host and Platform PG · Aster TSDB · Redis account · password are no longer asked — the host is computed from the address above, and the account/password are obtained from the Platform at startup. Internal secrets (gateway key, salt, inbound key, session secret, stored credential encryption key, etc.) are not asked — the installer generates them.

Prompted values can also be passed as environment variables of the same name instead of interactively (… | sudo PP_API_TOKEN=<token> PI_ADMIN_PASSWORD=<password> bash). The installer fills in only the keys that are still placeholders with those values and does not overwrite values already set.

The installer does not place the trust anchor (2026.10)

The Platform trust anchor /etc/kopens/ca/root.crt (and the same content as CA.crt) is not created by the installer. If START=1, the installer tries once to retrieve credentials from the Platform before fetching images, and if the anchor is missing or the key is wrong, it stops without bringing anything up. Either place the anchor first and run with START=1, or run prepare-only without START, then place the anchor and start it → Installation Overview


After Installation Completes​

  1. Change Initial Password — set up the admin console account. If PI_ADMIN_PASSWORD remains a placeholder, START=1 startup is refused, and if left blank, the console won't come up at all.
  2. Go to the AI Admin Console and check overall status from the home screen.
  3. Use the Service Port Map to configure your firewall.
  4. To use video/audio collection and voice-based chat queries, add the PI_MEDIA_ENABLED=true line to the host env and fetch the transcription model — it's off by default → Video/Audio Collection