Operators
Public seed so miners can connect
One machine on the open internet listens on TCP 30333,
publishes a bootnode multiaddr, and the rest of the network dials it.
Same --chain for everyone.
1. Start the seed
cargo build -p kohl-node --release
# For serious mining on this host: --features randomx
./scripts/setup-seed.sh
PUBLIC_ADDR=/ip4/YOUR.PUBLIC.IP/tcp/30333 \
MINING_SEED=<64-hex> \
./scripts/run-seed.sh
# Firewall
sudo ufw allow 30333/tcp
- Listen on
0.0.0.0:30333; advertise a routablePUBLIC_ADDR. - Keep JSON-RPC on localhost — miners need P2P, not your RPC.
- Fair launch: first mainnet miners define the live history.
2. Publish the bootnode string
./target/release/kohl key inspect-node-key --file ./data/seed/node-key
# → 12D3KooW…
# Multiaddr to publish:
# /ip4/YOUR.PUBLIC.IP/tcp/30333/p2p/12D3KooW…
3. Miner joins
BOOTNODE=/ip4/YOUR.PUBLIC.IP/tcp/30333/p2p/12D3KooW... \
MINING_SEED=<64-hex> \
./scripts/run-miner.sh
Same chain as the seed (kohl or a shared chainspecs/kohl.json).
On the seed, system_peers should become non-empty.
4. Optional chainspec with bootnodes
./scripts/make-chainspec.sh --chain kohl \
--bootnode /ip4/YOUR.PUBLIC.IP/tcp/30333/p2p/12D3KooW... \
--output chainspecs/kohl.json
# Miners:
./target/release/kohl --chain ./chainspecs/kohl.json \
--validator --mining-seed <64-hex>
5. systemd (production)
Units live in the repo under
scripts/systemd/
(kohl-seed.service, kohl-miner.service + env examples).
sudo cp scripts/systemd/kohl-seed.service /etc/systemd/system/
sudo cp scripts/systemd/kohl-seed.env.example /etc/kohl/seed.env
# edit PUBLIC_ADDR + MINING_SEED, chmod 600
sudo systemctl enable --now kohl-seed
journalctl -u kohl-seed -f
More
- docs/production-bootnode.md
- Tor runbook — onion seed instead of clearnet IP
- Home