メインコンテンツまでスキップ

(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)

項目
OSFedora 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 仕様

等級CPURAMSSDNIC価格帯
(≤ 1k タグ)4 コア / 2.0GHz+8GB256GB2x 1Gbps産業用ミニ PC
(1k–10k タグ)8 コア / 2.5GHz+16GB512GB SSD + 1TB HDD2x 1Gbps産業用アプライアンス
(10k+ タグ)16 コア / 3.0GHz+32GB+1TB NVMe2x 10Gbps1U サーバ

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 ステップ — 詳細

#ステップ動作想定出力
1KOPENS_HOME 環境変数の登録/etc/bashrc に追加(無出力)
2ホスト名設定hostnamectl set-hostname(無出力)
3${PE_HOME}/conf/env.sh 生成PE_HOME / PE_DATA_DIR / JAVA_HOME / CLEAN_ON_STARTUPenv.sh 出力
4${PE_DATA_DIR} (/data1) ディレクトリ生成mkdir -p/data1
5ネットワーク設定net/set-1.sh (1番 WAN)、net/set-2.sh (2番 PLC)、NetworkManager 再起動nmcli 出力
6net/status.sh + net/ping.sh 検証インターフェース状態 + 外部 pingRTT 出力
7ロケール / タイムゾーンko_KR.utf8 + Asia/Seouldate
8OS アップデートdnf -y updatednf 進捗表示
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-tuidnf 進捗
10チューニングtuned-adm profile throughput-performance + GNOME 省電力の無効化Active profile: throughput-performance
11ファイアウォールtools/firewall/open.sh (下記 5.1 表)firewall-cmd --list-all
12NTP (chrony)chrony.conf 適用 + サービス enable + hwclock -w 同期chronyc ntpdata
13TCP / file limit / sysctltools/file/run.sh (下記 5.2 表)(無出力)
14CPU governor全 CPU performance モード(無出力)
15NUMA + Hugepagesvm.zone_reclaim_mode=0 + transparent hugepage 無効化 + 9216 hugepage 予約numactl --show
16Dockertools/docker/setup.sh (Docker CE)docker version
17Java 17Amazon Correttojava -version
18Python 3 / NodeJSdnf installpython3 --version
19SSL 証明書の発行tools/ssl/gen.sh — 自己署名 CA + サーバ cert (/var/security/plantpulse/)openssl 出力
20VPNtools/vpn/setup.shVPN クライアントのインストール
21dnf clean allキャッシュ整理(無出力)
22systemd 登録/etc/systemd/system/plantpulse.service コピー + systemctl enable plantpulseservice 登録
23自動 reboot10秒カウントダウン後*** 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秒)。systemd restart はフルスタック (stop.shstart.sh)。

内部 wiring:

  • plantpulse.serviceExecStart=service-start.shbin/start.sh
  • plantpulse.serviceExecStop=service-stop.shbin/stop.sh

8. よく陥る落とし穴

ステップ症状原因 / 解決
5 (ネットワーク)set-1.sh 後に SSH が切断されるネットワークインターフェース / ゲートウェイの設定誤り。コンソール (KVM/IPMI) から入って nmcli con modify enp1s0 ipv4.address ... を手動復旧
5 (ネットワーク)NIC 名が enp1s0 ではない (例: eth0eno1)OS の NIC 名を確認 (nmcli dev)。tools/net/set-1.shIF=enp1s0 行を実際の名前に修正して setup.sh を再実行
8 (dnf)dnf アップデートが停止する回線 / 社内網 dnf mirror を点検。社内網の場合は /etc/yum.repos.d/ に社内 mirror を追加
9 (パッケージ)一部パッケージが missing (例: firefox がない)minimal インストール ISO。当該パッケージが欠けてもゲートウェイ自体に問題はありません — 無視して続行
10 (tuned)tuned-adm not founddnf install tuned が未インストール。手動インストール後、setup.sh の 11 ステップから再開
11 (ファイアウォール)firewall-cmd --reload 失敗firewalld が起動していない。systemctl start firewalld を手動実行。SELinux enforcing も点検
15 (hugepages)起動後に hugepage が解除される/etc/sysctl.d/99-plantpulse.confvm.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. インストール後、最初に推奨する作業

  1. Web UI 接続 + パスワード変更/ui/main → 右上のユーザーメニュー → パスワード変更
  2. サイト / エッジ ID の確認環境設定site.idedge.id
  3. Sparkplug B 連携Sparkplug B (必要な場合)
  4. 最初の PLC 接続の追加新しい PLC 接続の追加
  5. 定期バックアップ cron の登録 — バックアップ (backup.sh)

10. さらに詳しく