> For the complete documentation index, see [llms.txt](https://docs.endless.link/endless/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.endless.link/endless/devbuild/nodes/run-a-public-fullnode/deploy-a-pfn/using-precompiled-binary.md).

# Using Pre-compiled Binary

## Deploy a PFN using Pre-compiled binary

To deploy a Preferred Full Node (PFN) using pre-compiled binary, follow these steps:

1. Obtain the Endless-Core Software:
   * Using Pre-Compiled Binaries: Download the endless-node pre-compiled binary from [endless-releases](https://github.com/endless-labs/endless-release/releases).
2. Prepare Your System:
   * Ensure Executable Access: Place the compiled or downloaded `endless-node` binary in a directory included in your system's executable PATH.
   * Create Directories: Establish a base directory (e.g., `/home/endless/`) and within it, create a directory for your full node, such as `/home/endless/mainnet` for mainnet deployments.
3. Set Up the Full Node Environment

   * Navigate to the base directory and create necessary subdirectories:

   ```bash
   cd `/home/endless/mainnet`
   mkdir -p data genesis config
   ```

   * Download Network Files:

     * For Mainnet:

     ```bash
     curl -o ./genesis/genesis.blob \
        https://raw.githubusercontent.com/endless-labs/endless-release/main/endless-networks/mainnet/genesis.blob
     curl -o ./genesis/genesis_waypoint.txt \
        https://raw.githubusercontent.com/endless-labs/endless-release/main/endless-networks/mainnet/genesis_waypoint.txt
     ```

     * For Testnet:

     ```bash
     curl -o ./genesis/genesis.blob \
        https://raw.githubusercontent.com/endless-labs/endless-release/main/endless-networks/testnet/genesis.blob
     curl -o ./genesis/genesis_waypoint.txt \
        https://raw.githubusercontent.com/endless-labs/endless-release/main/endless-networks/testnet/genesis_waypoint.txt
     ```

     * For Other Networks: Access the appropriate genesis.blob and genesis\_waypoint.txt files from the [endless-networks](https://github.com/endless-labs/endless-release/tree/main/endless-networks) and download them into the genesis directory.
4. Configure the Full Node: Create the Configuration File: In the `config` directory, create a `fullnode.yaml` file. Edit Configuration Settings:

   * Specify the Genesis File Location: Set the path to the downloaded `genesis.blob` by modifying the `execution.genesis_file_location` parameter in `fullnode.yaml`. Ensure it points to the correct location, such as `/home/endless/mainnet/genesis/genesis.blob`.
   * Set the Waypoint File: Update the configuration to reference the `genesis_waypoint.txt` file, ensuring synchronization with the chosen network.
   * Define Data Storage Path: Configure the node to store synchronized blockchain data in the `data` directory you created earlier.

   [Sample configuration for reference](#sample-configuration-of-pfn)
5. Start your local public fullnode by running the below command:

```bash
endless-node --config ./config/fullnode.yaml
```

You have now successfully configured and started running a PFN in the Endless mainnet.

To inspect the current synchronization status by running the below command:

{% code overflow="wrap" %}

```bash
curl http://localhost:8080/v1

{"chain_id":220,"epoch":"16","ledger_version":"427179",...,"node_role":"full_node",...,"block_height":"213270",...}
```

{% endcode %}

The `chain_id` indicates the specific Endless network(current network is `Endless Mainnet`) to which you are connected.

The `epoch` and `block_height` represent the current synchronization progress, with `block_height` continually increasing as new blocks are added.

## Sample Configuration of PFN

A sample `fullnode.yaml` configuration file for typical full node

{% code overflow="wrap" %}

```yaml
base:
   role: "full_node"
   data_dir: "/home/endless/mainnet/data"
   waypoint:
      from_file: "/home/endless/mainnet/genesis/genesis_waypoint.txt"

execution:
   genesis_file_location: "/home/endless/mainnet/genesis/genesis.blob"

full_node_networks:
   - network_id: public
     seed_addrs: 
       0x415ef8d74118495935e60961806f24a8b502072378c73bdd87661d41a486ce1b:
         - /dns/chain-r-1.endless.link/tcp/6182/noise-ik/0x415ef8d74118495935e60961806f24a8b502072378c73bdd87661d41a486ce1b/handshake/0
       0xd8025b203853e3253393c80d8e81184983a4a00dfc23b432112e72ce1f827d69:
         - /dns/chain-r-2.endless.link/tcp/6182/noise-ik/0xd8025b203853e3253393c80d8e81184983a4a00dfc23b432112e72ce1f827d69/handshake/0
       0x52d09187b0bcc2e24f5aea940910ac42a645c231e6c0c9eebc65676350f1e94e:
         - /dns/chain-r-3.endless.link/tcp/6182/noise-ik/0x52d09187b0bcc2e24f5aea940910ac42a645c231e6c0c9eebc65676350f1e94e/handshake/0
       0x40cc7d84ecaf0b4afd364d7d5bb260aa71f31812c4c8f46be6fd68cccaba1d49:
         - /dns/chain-r-4.endless.link/tcp/6182/noise-ik/0x40cc7d84ecaf0b4afd364d7d5bb260aa71f31812c4c8f46be6fd68cccaba1d49/handshake/0
       0x2f9aac167b64843718a362bb2e4188b031ffcec500e80fd17582cde9437ffb07:
         - /dns/chain-r-5.endless.link/tcp/6182/noise-ik/0x2f9aac167b64843718a362bb2e4188b031ffcec500e80fd17582cde9437ffb07/handshake/0
     listen_address: /ip4/0.0.0.0/tcp/6182

api:
   enabled: true
   address: "0.0.0.0:8080"
```

{% endcode %}

{% hint style="info" %}
Don’t want to allow inbound connections?

Override the following if you do not want other PFNs connecting to yours: `listen_address: "/ip4/127.0.0.1/tcp/6182"`
{% endhint %}

### Sample configuration with index GRPC enabled

When user need to integrate `endless node` with `endless indexer`, it's necessary to enable the index GRPC feature on `endless node`.

Please add the following lines to configuration of full node, to enable index GRPC.

```yaml
state_sync:
  state_sync_driver:
    bootstrapping_mode: ExecuteOrApplyFromGenesis
    continuous_syncing_mode: ExecuteTransactionsOrApplyOutputs

storage:
  enable_indexer: true

indexer_grpc:
  enabled: true
  use_data_service_interface: true
  address: "0.0.0.0:50051"  # change to specified ipaddr:port where endless indexer is deployed 
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.endless.link/endless/devbuild/nodes/run-a-public-fullnode/deploy-a-pfn/using-precompiled-binary.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
