|
1 | | -# ───────────────────────────────────────────────────────────────────────────── |
2 | | -# Orbinum Mainnet — public RPC node |
3 | | -# |
4 | | -# Copy to `.env` on the RPC VPS and fill in the values below: |
5 | | -# cp .env.example .env |
| 1 | +# ═══ Orbinum Mainnet — public RPC ════════════════════════════════════════════ |
| 2 | +# cp .env.example .env |
6 | 3 | # |
7 | 4 | # TLS: Caddy terminates HTTPS/WSS with a Cloudflare Origin Certificate. Drop |
8 | | -# origin.pem / origin.key next to this file before starting. The DNS record |
9 | | -# must be Proxied (orange cloud) in Cloudflare. |
10 | | -# ───────────────────────────────────────────────────────────────────────────── |
| 5 | +# origin.pem / origin.key next to this file before starting, and set the DNS |
| 6 | +# record to Proxied (orange cloud). |
| 7 | +# ═════════════════════════════════════════════════════════════════════════════ |
| 8 | + |
| 9 | +# ─── Identity ──────────────────────────────────────────────────────────────── |
11 | 10 |
|
12 | | -# Container image (override to pin a specific tag) |
13 | 11 | ORBINUM_IMAGE=ghcr.io/orbinum/node:mainnet-latest |
14 | 12 |
|
15 | | -# Friendly name shown in telemetry. Use rpc-1 / rpc-2 / ... per node. |
| 13 | +# Shown in telemetry. Use rpc-1 / rpc-2 / ... per node. |
16 | 14 | RPC_NAME=Orbinum-RPC-1 |
17 | 15 |
|
18 | | -# Report to Orbinum's telemetry — https://telemetry.orbinum.network |
| 16 | +# libp2p node-key, hex 64 chars — unique per node. |
| 17 | +# openssl rand -hex 32 |
| 18 | +RPC_NODE_KEY= |
| 19 | + |
| 20 | +# Public domain. Caddy proxies HTTPS/WSS to localhost on RPC_PORT. |
| 21 | +RPC_DOMAIN=rpc-1.orbinum.io |
| 22 | + |
| 23 | +# ─── Telemetry ─────────────────────────────────────────────────────────────── |
| 24 | + |
| 25 | +# https://telemetry.orbinum.network — on by default. Publishes name, version, |
| 26 | +# height, peer count, approximate location. Empty to opt out. |
19 | 27 | # |
20 | | -# On by default. Reporting publishes this node's name, version, block height, |
21 | | -# peer count and approximate location; set this to empty to opt out. |
| 28 | +# Level 0 is the standard detail; higher levels add per-block chatter. RPCs stay |
| 29 | +# at 0 — they have no validator address to report. |
22 | 30 | # |
23 | | -# The trailing slash and the verbosity level are both required, and the whole |
24 | | -# value must stay quoted — the node parses "<url> <level>" as one argument. |
25 | | -# Level 0 is the standard detail level; higher levels add per-block chatter. |
| 31 | +# Keep it quoted and keep the trailing slash — the node parses "<url> <level>" |
| 32 | +# as one argument. |
26 | 33 | TELEMETRY_URL=--telemetry-url "wss://telemetry.orbinum.io/submit/ 0" |
27 | 34 |
|
28 | | -# This RPC's libp2p node-key (hex, 64 chars). Generate with: |
29 | | -# openssl rand -hex 32 |
30 | | -RPC_NODE_KEY= |
| 35 | +# ─── Peering ───────────────────────────────────────────────────────────────── |
31 | 36 |
|
32 | | -# Peers this node is allowed to talk to. Empty by default: a public RPC should |
33 | | -# discover peers freely. |
| 37 | +# Empty by default: a public RPC should discover peers freely. |
34 | 38 | # |
35 | 39 | # Pin it during a recovery. The chainspec's bootNodes are the RPCs themselves, |
36 | 40 | # so a freshly purged RPC discovers whatever is on the network — including a |
37 | | -# third-party node still serving a dead fork, which it will happily sync from |
38 | | -# because that chain is longer. Restricting it to your own validators for the |
39 | | -# duration of the resync is what stops that; clear it again afterwards. |
40 | | -# |
41 | | -# RESERVED_NODES=--reserved-only --reserved-nodes /ip4/<validator-ip>/tcp/30333/p2p/<peer-id> --reserved-nodes /ip4/<validator-ip>/tcp/30333/p2p/<peer-id> |
| 41 | +# third-party node still serving a dead fork, which it will sync from because |
| 42 | +# that chain is longer. Restricting it to your own validators for the duration |
| 43 | +# of the resync is what stops that; clear it again afterwards. |
| 44 | +# RESERVED_NODES=--reserved-only --reserved-nodes /ip4/<validator-ip>/tcp/30333/p2p/<peer-id> |
42 | 45 | RESERVED_NODES= |
43 | 46 |
|
44 | | -# Public domain for this RPC. Caddy proxies HTTPS/WSS to localhost on RPC_PORT. |
45 | | -# Use rpc-1 / rpc-2 / ... per node. |
46 | | -RPC_DOMAIN=rpc-1.orbinum.io |
| 47 | +# ─── Resources ─────────────────────────────────────────────────────────────── |
| 48 | +# Caps for the node container, so a query flood can't starve the host (Caddy, |
| 49 | +# SSH, the OS). Always leave RAM and CPU for the host — never give the container |
| 50 | +# the full core count. Scale to your server. |
47 | 51 |
|
48 | | -# Resource caps for the node container, so a query flood can't starve the host. |
49 | | -# Always leave some RAM and CPU for the host — never give the container the full |
50 | | -# core count. Scale to match your server. |
51 | 52 | RPC_MEM_LIMIT=6g |
52 | 53 | RPC_CPUS=1.5 |
53 | 54 |
|
54 | | -# ─── HOST ports ────────────────────────────────────────────────────────────── |
55 | | -# This node runs with `network_mode: host`, so these flags bind DIRECTLY on the |
56 | | -# host — there is no container port mapping in between. Changing a value here |
57 | | -# moves the real listening socket. |
| 55 | +# ─── Ports ─────────────────────────────────────────────────────────────────── |
| 56 | +# This stack runs `network_mode: host`, so these bind DIRECTLY on the host — |
| 57 | +# there is no container port mapping in between. Changing one moves the real |
| 58 | +# listening socket. |
58 | 59 |
|
59 | | -# P2P port. If you change it, open it in the firewall: it must stay publicly |
60 | | -# reachable or this node gets no peers. |
61 | | -# P2P_PORT=34105 |
| 60 | +# Open it in the firewall: must stay publicly reachable or this node gets no |
| 61 | +# peers. |
62 | 62 | P2P_PORT=30333 |
63 | 63 |
|
64 | | -# RPC port the node listens on, and the port Caddy proxies to over loopback. |
65 | | -# Both sides read this one variable, so they can never drift apart. |
| 64 | +# The port the node listens on AND the port Caddy proxies to over loopback — |
| 65 | +# both read this one variable, so they cannot drift apart. |
66 | 66 | # |
67 | | -# This is an internal port: public traffic arrives on 443 at RPC_DOMAIN and |
68 | | -# Caddy forwards it here. Changing it does NOT change the public endpoint. |
69 | | -# Keep it firewalled (`ufw deny <port>`) — clients must go through Caddy, which |
70 | | -# is what applies the rate limits. |
| 67 | +# Internal only: public traffic arrives on 443 at RPC_DOMAIN and Caddy forwards |
| 68 | +# it here, so changing this does NOT change the public endpoint. Keep it |
| 69 | +# firewalled (`ufw deny <port>`) — clients must go through Caddy, which is what |
| 70 | +# applies the rate limits. |
71 | 71 | RPC_PORT=9944 |
72 | 72 |
|
73 | | -# Prometheus metrics port. With host networking this binds on the public NIC, |
74 | | -# so keep it firewalled to the monitoring VPS only. |
| 73 | +# With host networking this binds on the public NIC — firewall it to the |
| 74 | +# monitoring VPS only. |
75 | 75 | METRICS_PORT=9615 |
0 commit comments