# POWER_HOUSE MAINNET LAUNCH – OPERATIONS GUIDE
Doc version: v0.1.54
This guide promotes your current two‑boot topology (boot1, boot2) to an open, public mainnet without manual peer approvals. It preserves uptime, removes trust boundaries, and keeps the network observable and maintainable.
Contents
- Overview and principles
- Policy changes (open network)
- Systemd updates (boot1, boot2)
- Networking and discovery
- Monitoring and verification
- Recommended join command for users
- Rollout plan (zero‑downtime)
- Troubleshooting and rollback
## Overview and Principles
- Zero downtime: restart one boot node at a time.
- Preserve identities: keep each node’s `--key` seed so Peer IDs remain stable.
- Policy mode is intentional: open for public testnets, stake‑gated for incentive mainnet.
- Observability: expose Prometheus metrics on `:9100` (or bind to localhost only if preferred).
## Policy Mode
### Open Network (public testnet)
Remove governance gating flags from boot nodes so any peer can connect and gossip. Anchor acceptance becomes open.
Remove the following flags from both boot nodes:
- `--policy /etc/powerhouse/governance.json`
- `--policy-allowlist /etc/powerhouse/allow.json`
### Stake‑Gated Network (incentive mainnet)
Keep governance gating enabled to enforce stake‑backed membership.
Set in `/etc/powerhouse/powerhouse-common.env`:
```
PH_POLICY=/etc/powerhouse/governance.json
```
Ensure `/etc/powerhouse/governance.json` points to a stake state file with signer threshold (e.g., 5‑of‑7) and valid member entries:
```
{ "backend": "stake", "state_path": "/etc/powerhouse/stake_state.json" }
```
## Systemd Updates (Boot1 and Boot2)
Use the templates in `infra/systemd/` plus node env files:
- `/etc/powerhouse/powerhouse-common.env`
- `/etc/powerhouse/powerhouse-boot1.env`
- `/etc/powerhouse/powerhouse-boot2.env`
Those feed `/usr/local/bin/powerhouse-boot.sh` (the shared launcher).
Copy the example env files from `infra/systemd/` and set:
`PH_BOOTSTRAPS`, `PH_BLOB_AUTH_TOKEN`, `PH_METRICS_ADDR`, and per-node paths.
Apply safely on each host:
```
systemctl daemon-reload
systemctl enable --now powerhouse-boot1.service # on boot1
systemctl enable --now powerhouse-boot2.service # on boot2
```
Enable ops timers (health, backup, log export):
```
systemctl enable --now powerhouse-healthcheck@boot1.timer powerhouse-backup@boot1.timer powerhouse-log-export@boot1.timer
systemctl enable --now powerhouse-healthcheck@boot2.timer powerhouse-backup@boot2.timer powerhouse-log-export@boot2.timer
```
## Networking and Discovery
- Open inbound TCP 7001 (boot1) and 7002 (boot2) in cloud firewall and any host firewall (UFW/iptables).
- Keep DNS seeds resolving to the public IPs: `137.184.33.2`, `146.190.126.101`.
- Optional: add more geographically distributed boot nodes to improve initial connectivity.
## Monitoring and Verification
Key runtime metrics (Prometheus on each node):
```