This documentation is at an early stage. Expect gaps and inaccurate content.
For the complete documentation index, see llms.txt. This page is also available as Markdown.

Run a Logos node with blockchain, storage, and delivery

Get started running a full Logos node with all three core modules on testnet v0.2.

This procedure covers installing and running a single Logos node with logoscore hosting the blockchain_module, storage_module, and delivery_module from one shared modules directory. It is intended for node operators who want to join the testnet and contribute to the Logos network. The steps assume a Linux host.

The default paths used throughout this procedure are:

/usr/local/bin/logoscore
/usr/local/bin/lgpd
/usr/local/bin/lgpm
/opt/logos-node/modules
/opt/logos-node/packages
/var/lib/logos-node

Before you start, make sure you have the following:

  • Linux host with a public IPv4 address

  • Ports 3000/udp, 8090/udp, 8091/tcp, 9000/udp, and 30303/tcp open on the host firewall

  • Root or sudo access to install tools and create system users

What to expect

  • You can run a full Logos node with all three modules active and publicly reachable on the testnet.

  • You can verify each module is healthy by querying the daemon and checking live port bindings.

  • You can configure the node for unattended operation using the systemd service pattern described in Troubleshooting.

Step 1: Install runtime tools

Install the system dependencies and download the three Logos CLI tools.

You can also install these tools by running:

  1. Install curl, jq, wget, and FUSE support for AppImage binaries:

  2. Download the Linux release assets for logoscore, lgpd, and lgpm:

    Tool
    Repository

    logoscore

    https://github.com/logos-co/logos-logoscore-cli

    lgpd

    https://github.com/logos-co/logos-package-downloader

    lgpm

    https://github.com/logos-co/logos-package-manager

    For x86_64 Linux, these are the current download URLs as of 2026-06-25:

  3. Install the tools under /usr/local/bin:

  4. Verify all three tools are accessible:

Step 2: Prepare the host

Create the runtime user and the directory layout the node uses at runtime.

  1. Create the logos system user and data directories:

  2. Open these on the host firewall:

Step 3: Install modules

Download and install the three module packages from the configured module catalogue.

lgpd download fetches the version published in the catalogue. It does not automatically pull the newest commit from module repositories. Ensure the intended versions are published in the catalogue before running these commands.

  1. Download the module packages:

  2. Install all three packages into the shared modules directory:

  3. Verify the installed versions:

Step 4: Start Logos Core

Start the logoscore daemon with the shared modules directory before loading any modules.

  1. Start logoscore in the foreground for a first manual run:

    • Keep this terminal open. Use a second terminal for all module commands.

    • For a detached run, pass -D to start in daemon mode: logoscore -m /opt/logos-node/modules -D

  2. Verify the daemon is running:

Step 5: Configure and start the blockchain module

Load the blockchain module, generate the node config, and start the module.

user_config.yaml contains node-local wallet and key-management configuration. Keep it private, restrict file permissions, and do not publish it. Generate a fresh file for each node.

  1. Create the peer bootstrap file:

  2. Load the module and generate user_config.yaml:

    • generate_user_config writes user_config.yaml to the logoscore daemon working directory (/var/lib/logos-node/user_config.yaml with this guide's layout).

    • Important fields in user_config.yaml include:

    Field
    Purpose
    Guidance

    network.initial_peers

    Bootstrap peers

    Use the current network document

    network.port

    Public UDP P2P port

    Keep aligned with firewall/NAT, normally 3000

    api.listen_address

    Local API bind

    Keep private, normally 127.0.0.1:8080

    state.base_folder

    State directory

    Use a persistent local path

    logger filters

    Log verbosity

    Use INFO for unattended operation

  3. Start the blockchain module:

    • The second argument is intentionally an empty string; the blockchain module no longer requires a downloaded deployment.yaml file.

  4. Verify the module is running:

Step 6: Configure and start the storage module

Create the storage config and start the module. Replace <public-ip> with the node's public IPv4 address before running these commands.

  1. Create the storage config:

    • config.json includes the following fields:

    Field
    Purpose

    data-dir

    Storage repository path

    log-level

    Log verbosity

    listen-ip

    Local TCP bind address

    listen-port

    Public TCP libp2p port

    disc-port

    Public UDP discovery port

    nat

    Public IP advertisement mode

    network

    Storage network preset

    • Use fixed listen-port and disc-port; do not leave public nodes on random ports.

    • The logos.test preset provides the storage bootstrap settings.

    • Fields

    To run storage with mix support, generate the config from the published mix bootstrap data:

  2. Load and start the storage module:

    • If using the mix config, also enable private queries and verify with a test download:

Step 7: Configure and start the delivery module

Create the delivery config and start the module. Replace <public-ip> with the node's public IPv4 address before running these commands.

  1. Create the delivery config:

    • config.json includes the following fields:

    Field
    Purpose

    preset

    Network preset

    mode

    Delivery node mode

    logLevel

    Log verbosity

    tcpPort

    Public TCP P2P port

    discv5UdpPort

    Public UDP discovery port

    discv5Discovery

    Enable discv5 discovery

    nat

    Public IP advertisement mode

    • Use fixed tcpPort and discv5UdpPort; do not leave public nodes on random ports.

    • The logos.test preset provides the delivery network bootstrap settings.

  2. Load and start the delivery module:

  3. Verify the delivery module is running:

Step 8: Verify the full node is healthy

Run health checks against the daemon and all three modules to confirm the node is fully operational.

  1. Check the daemon and all loaded modules:

    Expected modules in the output: storage_module, blockchain_module, delivery_module, capability_module.

  2. Verify all ports are bound correctly:

    Expected bindings:

  3. Check the blockchain module sync state:

  4. Check the delivery module bound ports:

Optional: Run the node unattended with systemd

Use a dedicated service for logoscore and a separate bootstrap script for module startup. Do not start modules from ExecStartPost in the logoscore service — slow or failing module starts may cause systemd to kill the daemon.

Daemon service unit:

The bootstrap script should wait for logoscore status, load and start the storage module, load and start the blockchain module, and load and start the delivery module. It should tolerate already-loaded modules and slow module starts.

Recommended journald retention to cap disk usage:

Use the INFO log level for unattended operation; use DEBUG only for short troubleshooting windows.

Last updated

Was this helpful?