(legacy) H/W 全体インストール — native tools/setup.sh
このページは 2026.05 未満の native 配布ボックスを保守する際に参照する legacy 手順です。
新規 H/W、量産出荷、新規現場設置には クイックインストール (install.sh) を使用してください。
tools/setup.sh は native plantpulse.service と host 直接実行構成を前提としています。
2026.05+ のコンテナ標準では plantpulse-edge.service 一つがランタイムを管理します。
両モードを同一ボックスで混在させると、ポート/データパスが競合します。
すでに native で運用中の旧型ボックスを再インストール/復旧する必要がある場合、または以前の現場引き渡し文書と 照合する必要がある場合にのみ使用します。新規ボックスであれば インストール — 一目でわかる に戻ってください。
1. 事前要件 (legacy native)
| 項目 | 値 |
|---|---|
| OS | Fedora 38 (当時の検証基準 — 他の RHEL 系でも動作可能、動作検証は別途) |
| 権限 | root (sudo -i または root 直接ログイン) |
| ネットワーク | インターネット接続 (dnf パッケージ + legacy native bundle ダウンロード) |
| ディスク | /opt に ~3GB、/data1 (別パーティション推奨) データ用 100GB+ |
| メモリ | 最小 8GB (Cassandra 4GB heap + Tomcat 4GB) |
| NIC 数 | 2 個 (1番 = WAN/外部、2番 = PLC/内部) — 産業用アプライアンス標準 |
| 時刻 | インターネット NTP 到達可能 (chrony インストール済み) |
1.1 推奨 H/W 仕様
| 等級 | CPU | RAM | SSD | NIC | 価格帯 |
|---|---|---|---|---|---|
| 小 (≤ 1k タグ) | 4 コア / 2.0GHz+ | 8GB | 256GB | 2x 1Gbps | 産業用ミニ PC |
| 中 (1k–10k タグ) | 8 コア / 2.5GHz+ | 16GB | 512GB SSD + 1TB HDD | 2x 1Gbps | 産業用アプライアンス |
| 大 (10k+ タグ) | 16 コア / 3.0GHz+ | 32GB+ | 1TB NVMe | 2x 10Gbps | 1U サーバ |
2. 配置場所
/opt/kopens/tools/setup.sh ← 메인 setup 스크립트
/opt/kopens/tools/net/ ← 네트워크 set-1.sh / set-2.sh / status.sh / ping.sh
/opt/kopens/tools/firewall/open.sh ← firewalld 포트 오픈
/opt/kopens/tools/file/run.sh ← TCP / file limit / sysctl 튜닝
/opt/kopens/tools/file/sysctl.conf ← 커널 튜닝
/opt/kopens/tools/file/limits.conf ← 프로세스 리소스 한도
/opt/kopens/tools/file/chrony.conf ← NTP
/opt/kopens/tools/docker/setup.sh ← Docker CE 설치
/opt/kopens/tools/java/setup.sh ← Amazon Corretto 17
/opt/kopens/tools/python/setup.sh ← Python 3 + pip
/opt/kopens/tools/nodejs/setup.sh ← Node.js + npm
/opt/kopens/tools/ssl/gen.sh ← 자체 서명 인증서 발급 (CA + 서버)
/opt/kopens/tools/vpn/setup.sh ← VPN 클라이언트
/opt/kopens/tools/service/plantpulse.service ← systemd unit
/opt/kopens/tools/service/service-start.sh ← systemd ExecStart → bin/start.sh
/opt/kopens/tools/service/service-stop.sh ← systemd ExecStop → bin/stop.sh
3. 実行 — legacy native ワンライナー
# 1) root 권한
sudo -i
# 2) 작업 디렉토리
cd /opt/kopens/tools
# 3) 실행 (대화형 — 호스트명 + 네트워크 설정을 묻습니다)
./setup.sh
全体所要時間: 15–30 分 (インターネット速度 + dnf パッケージダウンロード + tuned ブート)。
完了後 10秒後に自動 reboot — 再起動後、legacy plantpulse.service が自動起動します。
4. ステップ別入力ガイド (対話型 prompt)
インストール中、次の入力が順に表示されます。
4.1 ホスト名
[?] INPUT THIS EDGE GATEAY HOSTNAME :
=> EDGE_00303
ゲートウェイ識別用。EDGE_<4-digits> またはサイトの命名規則に合わせて入力。例: EDGE_00303。
4.2 1番 NIC (WAN / 外部網) — enp1s0
[?] ETHERNET [enp1s0] MODE [DHCP|STATIC] :
| モード | 入力 | その後 |
|---|---|---|
DHCP | 自動で IP 取得 | 追加入力なし |
STATIC | 固定 IP 使用 | IP/マスク、ゲートウェイ、DNS を追加入力 |
STATIC の場合の追加 prompt:
[?] ETHERNET [enp1s0] IP/SUBNETMASK : 192.168.0.50/24
[?] ETHERNET [enp1s0] GATEWAY : 192.168.0.1
[?] ETHERNET [enp1s0] DNS : 8.8.8.8
この NIC は デフォルトゲートウェイ (外部インターネット / クラウド / Platform API) 到達用。DNS は社内 DNS または公開 DNS。
4.3 2番 NIC (PLC / 内部網) — enp2s0
同じ形式でもう一度。PLC 網専用なので通常は STATIC できれいに分離します:
[?] ETHERNET [enp2s0] MODE [DHCP|STATIC] : STATIC
[?] ETHERNET [enp2s0] IP/SUBNETMASK : 192.168.100.10/24
[?] ETHERNET [enp2s0] GATEWAY : 192.168.100.1
[?] ETHERNET [enp2s0] DNS : 192.168.100.1
この NIC は デフォルトゲートウェイとして使用しません (
ipv4.never-default yes) — PLC との私設網通信専用。WAN ルーティングとは分離されます。
4.4 ネットワーク検証 + 時刻同期
setup.sh が自動的に nmcli con up 後、ping で外部到達を検証し、chronyc makestep で NTP 同期します。出力に OK または IP / RTT が表示されれば正常です。
5. setup.sh 全 22 ステップ — 詳細
| # | ステップ | 動作 | 想定出力 |
|---|---|---|---|
| 1 | KOPENS_HOME 環境変数の登録 | /etc/bashrc に追加 | (無出力) |
| 2 | ホスト名設定 | hostnamectl set-hostname | (無出力) |
| 3 | ${PE_HOME}/conf/env.sh 生成 | PE_HOME / PE_DATA_DIR / JAVA_HOME / CLEAN_ON_STARTUP | env.sh 出力 |
| 4 | ${PE_DATA_DIR} (/data1) ディレクトリ生成 | mkdir -p | /data1 |
| 5 | ネットワーク設定 | net/set-1.sh (1番 WAN)、net/set-2.sh (2番 PLC)、NetworkManager 再起動 | nmcli 出力 |
| 6 | net/status.sh + net/ping.sh 検証 | インターフェース状態 + 外部 ping | RTT 出力 |
| 7 | ロケール / タイムゾーン | ko_KR.utf8 + Asia/Seoul | date |
| 8 | OS アップデート | dnf -y update | dnf 進捗表示 |
| 9 | 必須パッケージインストール | tar / htop / fping / pv / firefox / java-17-openjdk-devel / jna / jemalloc / zstd / curl-devel / chrony / tuned / net-tools / numactl / nodejs / npm / python3 / fail2ban / gcc / glibc-devel / NetworkManager-tui | dnf 進捗 |
| 10 | チューニング | tuned-adm profile throughput-performance + GNOME 省電力の無効化 | Active profile: throughput-performance |
| 11 | ファイアウォール | tools/firewall/open.sh (下記 5.1 表) | firewall-cmd --list-all |
| 12 | NTP (chrony) | chrony.conf 適用 + サービス enable + hwclock -w 同期 | chronyc ntpdata |
| 13 | TCP / file limit / sysctl | tools/file/run.sh (下記 5.2 表) | (無出力) |
| 14 | CPU governor | 全 CPU performance モード | (無出力) |
| 15 | NUMA + Hugepages | vm.zone_reclaim_mode=0 + transparent hugepage 無効化 + 9216 hugepage 予約 | numactl --show |
| 16 | Docker | tools/docker/setup.sh (Docker CE) | docker version |
| 17 | Java 17 | Amazon Corretto | java -version |
| 18 | Python 3 / NodeJS | dnf install | python3 --version |
| 19 | SSL 証明書の発行 | tools/ssl/gen.sh — 自己署名 CA + サーバ cert (/var/security/plantpulse/) | openssl 出力 |
| 20 | VPN | tools/vpn/setup.sh | VPN クライアントのインストール |
| 21 | dnf clean all | キャッシュ整理 | (無出力) |
| 22 | systemd 登録 | /etc/systemd/system/plantpulse.service コピー + systemctl enable plantpulse | service 登録 |
| 23 | 自動 reboot | 10秒カウントダウン後 | *** NOW REBOOT AFTER 10 SEC! *** |
set -e が有効なため、どのステップでも失敗すると即座に中断します。
5.1 ファイアウォール — 自動で開放されるポート一覧
tools/firewall/open.sh が次の TCP ポートを public zone に永続追加します:
| ポート | 用途 |
|---|---|
| 22 (TCP/UDP) | SSH |
| 80, 443 (TCP) | Web UI (/ui/main) |
| 123 (TCP/UDP) | NTP |
| 1880 (TCP) | Node-RED (/ui/flow のバックエンド) |
| 3000 (TCP) | Grafana (時系列ダッシュボード) |
| 4000 (TCP) | APM / モニタリング |
| 7000, 7001, 9042 (TCP) | Cassandra (gossip / SSL gossip / クライアント) |
| 7799 (TCP) | JMX (Tomcat モニタ) |
| 7800, 7801 (TCP) | timeseries-engine |
| 9090 (TCP) | Cockpit (サーバ管理) |
| 12000, 12443 (TCP) | OPC-UA (TCP / TLS) |
| 19999 (TCP) | NetData |
さらに --add-masquerade が有効化され、Docker コンテナがホスト網へ NAT されます。
5.2 sysctl チューニング (/etc/sysctl.conf の一部)
net.ipv4.tcp_keepalive_time = 60 # PLC TCP keepalive 빠르게
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl = 10
net.core.rmem_max = 16777216 # 16MB 수신 버퍼
net.core.wmem_max = 16777216 # 16MB 송신 버퍼
net.core.somaxconn = 1024
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
vm.max_map_count = 1048575 # Cassandra mmap
vm.overcommit_memory = 1 # Cassandra hint
vm.swappiness = 1 # 최소 스왑
6. 再起動後 — native の正常動作確認 (1分)
# 1) systemd 서비스 살아있는지
systemctl status plantpulse
# 예: active (running) since ...
# 2) 모든 컴포넌트 프로세스
/opt/kopens/plantpulse-edge/bin/ps.sh
# 3) 시스템 헬스 (200 OK 면 게이트웨이 정상)
curl -s http://127.0.0.1/api/v1/system/health | jq
# 4) OPC-UA 트리 (등록된 OPC 가 0 이어도 OK — 빈 배열)
curl -s http://127.0.0.1/ui/opcua/tree | jq '.data.tree | length'
# 5) 웹 UI
# 브라우저 → https://<gateway>/ui/main
# 좌상단 로고 + 30개 카드가 보이면 정상
7. systemd 統合運用 (legacy native)
インストール後、systemd がゲートウェイを自動管理します:
sudo systemctl start plantpulse # 시작 (start.sh 호출)
sudo systemctl stop plantpulse # 정지 (stop.sh 호출)
sudo systemctl status plantpulse # 상태
sudo systemctl restart plantpulse # 풀스택 재시작 (60초+ 다운타임)
sudo journalctl -u plantpulse -n 100 # systemd 로그 마지막 100줄
Tomcat のみの単純な再起動 (コード /
app.propertiesの反映) はbin/restart.sh(~6秒)。systemdrestartはフルスタック (stop.sh→start.sh)。
内部 wiring:
plantpulse.service→ExecStart=service-start.sh→bin/start.shplantpulse.service→ExecStop=service-stop.sh→bin/stop.sh
8. よく陥る落とし穴
| ステップ | 症状 | 原因 / 解決 |
|---|---|---|
| 5 (ネットワーク) | set-1.sh 後に SSH が切断される | ネットワークインターフェース / ゲートウェイの設定誤り。コンソール (KVM/IPMI) から入って nmcli con modify enp1s0 ipv4.address ... を手動復旧 |
| 5 (ネットワーク) | NIC 名が enp1s0 ではない (例: eth0、eno1) | OS の NIC 名を確認 (nmcli dev)。tools/net/set-1.sh の IF=enp1s0 行を実際の名前に修正して setup.sh を再実行 |
| 8 (dnf) | dnf アップデートが停止する | 回線 / 社内網 dnf mirror を点検。社内網の場合は /etc/yum.repos.d/ に社内 mirror を追加 |
| 9 (パッケージ) | 一部パッケージが missing (例: firefox がない) | minimal インストール ISO。当該パッケージが欠けてもゲートウェイ自体に問題はありません — 無視して続行 |
| 10 (tuned) | tuned-adm not found | dnf install tuned が未インストール。手動インストール後、setup.sh の 11 ステップから再開 |
| 11 (ファイアウォール) | firewall-cmd --reload 失敗 | firewalld が起動していない。systemctl start firewalld を手動実行。SELinux enforcing も点検 |
| 15 (hugepages) | 起動後に hugepage が解除される | /etc/sysctl.d/99-plantpulse.conf に vm.nr_hugepages = 9216 を永続追加 |
| 22 (systemd) | 再起動後にゲートウェイが起動しない | journalctl -u plantpulse --no-pager で unit の失敗原因を確認。bin/start.sh を直接実行して、どこで止まるかを把握 |
set -e | 途中で abort | メッセージ本文の 直前ステップ を確認。そのステップのみ手動実行後、setup.sh の 次のステップから 再開 |
| 一般 | スクリプト実行権限 | chmod +x /opt/kopens/tools/setup.sh (まれに必要) |
9. インストール後、最初に推奨する作業
- Web UI 接続 + パスワード変更 —
/ui/main→ 右上のユーザーメニュー → パスワード変更 - サイト / エッジ ID の確認 — 環境設定 の
site.id、edge.id - Sparkplug B 連携 — Sparkplug B (必要な場合)
- 最初の PLC 接続の追加 — 新しい PLC 接続の追加
- 定期バックアップ cron の登録 — バックアップ (
backup.sh)
10. さらに詳しく
- クイック / ワンライナーインストール (OS が既に準備済みの場合): クイックインストール (ワンライナー)
- 運用スクリプトカタログ: 運用 — 一目でわかる
- アップグレード手順: アップグレード (
upgrade.sh) - 環境変数 / 設定: 環境設定 (
app.properties) - バックアップからの復旧: バックアップ (
backup.sh)