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-nodeBefore you start, make sure you have the following:
Linux host with a public IPv4 address
Ports
3000/udp,8090/udp,8091/tcp,9000/udp, and30303/tcpopen on the host firewallRoot or
sudoaccess 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:
Install
curl,jq,wget, and FUSE support for AppImage binaries:Download the Linux release assets for
logoscore,lgpd, andlgpm:ToolRepositorylogoscorehttps://github.com/logos-co/logos-logoscore-clilgpdhttps://github.com/logos-co/logos-package-downloaderlgpmhttps://github.com/logos-co/logos-package-managerFor x86_64 Linux, these are the current download URLs as of 2026-06-25:
Install the tools under
/usr/local/bin:Verify all three tools are accessible:
Step 2: Prepare the host
Create the runtime user and the directory layout the node uses at runtime.
Create the
logossystem user and data directories: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.
Download the module packages:
Install all three packages into the shared modules directory:
Verify the installed versions:
Step 4: Start Logos Core
Start the logoscore daemon with the shared modules directory before loading any modules.
Start
logoscorein the foreground for a first manual run:Keep this terminal open. Use a second terminal for all module commands.
For a detached run, pass
-Dto start in daemon mode:logoscore -m /opt/logos-node/modules -D
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.
Create the peer bootstrap file:
Load the module and generate
user_config.yaml:generate_user_configwritesuser_config.yamlto thelogoscoredaemon working directory (/var/lib/logos-node/user_config.yamlwith this guide's layout).Important fields in
user_config.yamlinclude:
FieldPurposeGuidancenetwork.initial_peersBootstrap peers
Use the current network document
network.portPublic UDP P2P port
Keep aligned with firewall/NAT, normally
3000api.listen_addressLocal API bind
Keep private, normally
127.0.0.1:8080state.base_folderState directory
Use a persistent local path
logger filters
Log verbosity
Use
INFOfor unattended operationStart the blockchain module:
The second argument is intentionally an empty string; the blockchain module no longer requires a downloaded
deployment.yamlfile.
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.
Create the storage config:
config.jsonincludes the following fields:
FieldPurposedata-dirStorage repository path
log-levelLog verbosity
listen-ipLocal TCP bind address
listen-portPublic TCP libp2p port
disc-portPublic UDP discovery port
natPublic IP advertisement mode
networkStorage network preset
Use fixed
listen-portanddisc-port; do not leave public nodes on random ports.The
logos.testpreset provides the storage bootstrap settings.Fields
To run storage with mix support, generate the config from the published mix bootstrap data:
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.
Create the delivery config:
config.jsonincludes the following fields:
FieldPurposepresetNetwork preset
modeDelivery node mode
logLevelLog verbosity
tcpPortPublic TCP P2P port
discv5UdpPortPublic UDP discovery port
discv5DiscoveryEnable discv5 discovery
natPublic IP advertisement mode
Use fixed
tcpPortanddiscv5UdpPort; do not leave public nodes on random ports.The
logos.testpreset provides the delivery network bootstrap settings.
Load and start the delivery module:
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.
Check the daemon and all loaded modules:
Expected modules in the output:
storage_module,blockchain_module,delivery_module,capability_module.Verify all ports are bound correctly:
Expected bindings:
Check the blockchain module sync state:
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?

