# Start the Blockchain node

Now we have everything we require to start the node, we will keep all the config files below ready on server to spin the node.

### Edit config file

This is sample config file which can be edit as per business and security requirements:

{% hint style="info" %}
Replace PRODUCER\_NAME, PUBLIC\_KEY and PRIVATE\_KEY.
{% endhint %}

```bash
cat >etc/config.ini <<'EOT'
producer-name = PRODUCER_NAME
signature-provider=PUBLIC_KEY=KEY:PRIVATE_KEY
enable-stale-production = true

http-server-address = 0.0.0.0:8888
p2p-listen-endpoint = 0.0.0.0:9851

access-control-allow-origin = *
http-validate-host = false
contracts-console = true
verbose-http-errors = true

plugin = eosio::chain_plugin
plugin = eosio::chain_api_plugin
plugin = eosio::producer_plugin
plugin = eosio::producer_api_plugin
plugin = eosio::http_plugin
plugin = eosio::history_api_plugin
plugin = eosio::history_plugin

plugin = eosio::state_history_plugin
plugin = eosio::net_plugin

trace-history = true
chain-state-history = true
trace-history-debug-mode = true
state-history-endpoint = 0.0.0.0:8081

EOT
```

{% hint style="info" %}
Change 0.0.0.0 to internal IP for security purposes.
{% endhint %}

### Create log file

```bash
cat >etc/logging.json <<'EOT'
{
  "includes": [],
  "appenders": [{
      "name": "consoleout",
      "type": "console",
      "args": {
        "stream": "std_out",
        "level_colors": [{
            "level": "debug",
            "color": "green"
          },{
            "level": "warn",
            "color": "brown"
          },{
            "level": "error",
            "color": "red"
          }
        ]
      },
      "enabled": true
    }
  ],
  "loggers": [{
      "name": "default",
      "level": "warn",
      "enabled": true,
      "additivity": false,
      "appenders": [
        "consoleout"
      ]
    }
  ]
}
EOT
```

### Edit Genesis file

This is sample genesis file, where we need to edit only three things, `initial_timestamp, initial_key and initial_chain_id.`

```
cat >etc/genesis.json <<'EOT'
{
  "initial_timestamp": "2020-06-25T00:00:00.000",
  "initial_key": "PUBLIC_KEY",
  "initial_configuration": {
    "max_block_net_usage": 1048576,
    "target_block_net_usage_pct": 1000,
    "max_transaction_net_usage": 524288,
    "base_per_transaction_net_usage": 12,
    "net_usage_leeway": 500,
    "context_free_discount_net_usage_num": 20,
    "context_free_discount_net_usage_den": 100,
    "max_block_cpu_usage": 100000,
    "target_block_cpu_usage_pct": 500,
    "max_transaction_cpu_usage": 50000,
    "min_transaction_cpu_usage": 100,
    "max_transaction_lifetime": 3600,
    "deferred_trx_expiration_window": 600,
    "max_transaction_delay": 3888000,
    "max_inline_action_size": 4096,
    "max_inline_action_depth": 4,
    "max_authority_depth": 6
  },
  "initial_chain_id": "00000000000000000000000000000000000000000000000000005368696e650a"
}
EOT
```

### **Create systemd**

systemd service manager will take care of on-demand starting of daemons.

```
cat >etc/shine.service <<'EOT'
[Unit]
Description=Shine
[Service]
Type=simple
ExecStart=/usr/bin/nodeos --genesis-json /home/shine/etc/genesis.json --data-dir /home/shine/data/ --config-dir /home/shine/etc/ --disable-replay-opts
TimeoutStartSec=30s
TimeoutStopSec=300s
Restart=no
User=root
Group=daemon
KillMode=control-group
[Install]
WantedBy=multi-user.target
EOT
```

### Start the node

Finally we are ready to spin the node, on entering below command we should have our new private-net node up and running and producing blocks.

```
sudo cp etc/shine.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable shine
sudo systemctl restart shine
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://shine-docs.chainflux.com/shine-blockchain-setup/start-the-node.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
