プロダクション検収基準
このページは、設置担当者と運用チームが同一の基準で「運用投入可能」かどうかを判断するためのチェックリストです。 設置が完了したとは、単にサービスが一度起動したことではなく、再起動/バックアップ/ヘルスチェック/セキュリティ/検収エビデンスがすべて残っていることを意味します。
1. Go / No-Go 基準
| 区分 | Go 基準 | No-Go |
|---|---|---|
| デプロイモード | plantpulse-edge.service がコンテナを管理 | サービスが登録されていない |
| systemd | plantpulse-edge.service active + enabled | active だが enabled ではない、または restart loop |
| ヘルスチェック | /api/v1/system/health HTTP 200 + components UP | HTTP 503, component DOWN, 応答遅延が継続 |
| バージョン | /api/v1/system/version の image_tag / build_date 記録 | tag 未確認, 旧イメージで起動 |
| ネットワーク | WAN, PLC NIC, DNS/NTP, プラットフォーム API 到達性の確認 | PLC 網がデフォルトルートを保有, NTP 未同期 |
| セキュリティ | /etc/kopens/credentials.txt root 0600, 初期 admin パスワード変更完了 | デフォルト/共有パスワードのまま, 認証情報の伝達記録なし |
| バックアップ | backup.sh 1回成功 + .sha256 存在 | バックアップ未実行, バックアップが同一ディスクにのみ存在 |
| 復旧性 | doctor.sh または acceptance log 生成 | 障害時に伝達するエビデンスなし |
一つでも No-Go があれば運用投入せず、設置トラブルシューティング または コンテナモード運用 のエスカレーション手順に従ってください。
2. 設置前承認項目
設置前に運用チームが確認すべき値:
| 項目 | 例 |
|---|---|
EDGE_ID | EDGE_00303 |
SITE_ID | SITE_00001 |
| プラットフォーム host / API key | SERVER_HOST, SERVER_API_KEY |
| PLC NIC / WAN NIC | NET1_IFACE, NET2_IFACE |
| static IP / gateway / DNS | NET1_IP, NET2_IP, NET2_GATEWAY, NET2_DNS |
| image tag ポリシー | latest または固定 IMAGE_TAG=2026-YYYYMMDD |
| 初期認証情報ポリシー | ランダム生成 または 運用チーム指定 |
| 外部バックアップ先 | NAS / S3 / 運用バックアップサーバー |
認証情報はチャットやメール本文に残さず、root 専用ファイルまたは運用秘密管理ストレージで伝達してください。
3. Secret-safe 設置 env
パスワードや API key を shell history に残さないために、root 専用の env ファイルを使用します。
sudo -i
umask 077
install -m 600 /dev/null /root/pp-edge-install.env
${EDITOR:-vi} /root/pp-edge-install.env
ファイル内容の例:
export EDGE_ID=EDGE_00303
export SITE_ID=SITE_00001
export SERVER_HOST=192.168.0.41
export SERVER_API_KEY='<platform-api-key>'
export NET1_IFACE=enp1s0
export NET1_IP=192.168.100.10/24
export NET2_IFACE=enp2s0
export NET2_IP=192.168.0.10/24
export NET2_GATEWAY=192.168.0.1
export NET2_DNS=192.168.0.1
# export IMAGE_TAG=2026.11-20261103-1006
実行:
sudo -i
set -a
. /root/pp-edge-install.env
set +a
cd /opt/kopens/install
bash install.sh
運用チームが初期パスワードを直接指定する場合でも、同一ファイルに ADMIN_PASS, API_KEY, MQTT_PASS,
OPCUA_PASS, CERT_PASS を入れ、chmod 600 を維持します。公式 cert password key は CERT_PASS のみを使用します。
4. 検収エビデンス収集
設置完了後、以下のコマンドで機密値を除いたエビデンスファイルを残します。
sudo -i
OUT=/root/pp-edge-acceptance-$(date +%Y%m%d-%H%M%S).txt
{
echo "# PlantPulse Edge acceptance"
date -Is
echo
echo "## host"
hostnamectl
uname -a
timedatectl
echo
echo "## service"
systemctl is-enabled plantpulse-edge.service || true
systemctl is-active plantpulse-edge.service || true
systemctl status plantpulse-edge.service --no-pager | sed -n '1,40p'
echo
echo "## version"
curl -ks https://127.0.0.1/api/v1/system/version | python3 -m json.tool
echo
echo "## health"
curl -ks https://127.0.0.1/api/v1/system/health | python3 -m json.tool
echo
echo "## ports"
ss -lntp | grep -E ':(80|443|1883|1884|6379|9042|1880|12000|12443)([[:space:]]|$)' || true
echo
echo "## storage"
df -h /opt /data1 2>/dev/null || df -h
echo
echo "## docker"
docker ps --filter name=plantpulse-edge --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}'
} > "$OUT"
chmod 600 "$OUT"
sha256sum "$OUT" > "$OUT.sha256"
echo "$OUT"
検収時に運用チームへ伝達する項目:
- acceptance text ファイルのパスと sha256
/data1/pp-backups/pe-backup-*.tar.zstと.sha256/tmp/pe-doctor-*.tar.zstと.sha256(問題発生時)- ゲートウェイ IP,
EDGE_ID,SITE_ID, image tag, 設置日時 - 認証情報の伝達完了状況(パスワード原文は別途セキュリティ手順にて)
5. 再起動検証
運用投入前に一度は service restart 後、自動復旧を確認します。
sudo systemctl restart plantpulse-edge.service
sleep 30
sudo bash /opt/kopens/install/bin/health.sh
curl -ks https://127.0.0.1/api/v1/system/health | python3 -m json.tool
PLC 接続がすでに登録されている現場は、restart 後に収集状態と最終値の更新まで確認します。
6. バックアップと復旧準備
sudo bash /opt/kopens/install/bin/backup.sh
ls -lh /data1/pp-backups/
sha256sum /data1/pp-backups/pe-backup-*.tar.zst | tail -1
初回バックアップは外部 NAS/S3/運用バックアップサーバーにコピーします。同一ディスク内のバックアップだけでは障害復旧ができません。
7. 運用チーム検収後のロック
/etc/kopens/credentials.txt権限が0600 rootであることを確認- 初期 admin パスワード変更完了
/root/pp-edge-install.env保存ポリシー決定:運用秘密管理ストレージへ移管後、ボックスから削除するか root 0600 を維持- ファイアウォールで WAN 露出が必要なポートのみ許可
- 運用チーム連絡先とエスカレーション経路を登録
- 次回点検日とバックアップ検証日を予約