A comprehensive guide to run the Logos Blockchain Node v0.1.2 on Linux (including WSL2, Ubuntu, Debian, Fedora, and other distributions).
- System Requirements
- Prerequisites
- Installation
- Configuration
- Running the Node
- Restarting the Node
- Monitoring
- Getting Testnet Funds
- Block Production
- Publishing Messages
- Performance Optimization
- Troubleshooting
- Resources
| Component | Specification |
|---|---|
| OS | Ubuntu 20.04 LTS+, Debian 11+, Fedora 36+, CentOS 8+, or WSL2 |
| Architecture | x86_64 (64-bit) |
| Processor | Intel i5/AMD Ryzen 5 (or equivalent) - 4+ cores |
| RAM | 8 GB minimum |
| Storage | 50 GB SSD minimum (fast I/O critical) |
| Network | Stable internet, UDP ports 3000-3003 accessible |
| Uptime | 99%+ availability recommended |
| Component | Specification |
|---|---|
| Processor | Intel i7/AMD Ryzen 7 or better - 8+ cores |
| RAM | 32 GB |
| Storage | 100 GB+ NVMe SSD |
| Network | Fiber or 1Gbps+ connection |
| Uptime | 24/7 dedicated machine |
| OS | Ubuntu 22.04 LTS or Debian 12 |
| Distribution | Status | Notes |
|---|---|---|
| Ubuntu 20.04 LTS | β Fully Supported | Recommended for beginners |
| Ubuntu 22.04 LTS | β Fully Supported | Recommended - Latest LTS |
| Debian 11 (Bullseye) | β Fully Supported | Stable option |
| Debian 12 (Bookworm) | β Fully Supported | Latest Debian |
| Fedora 36+ | β Supported | RPM-based |
| CentOS 8+ | β Supported | Enterprise option |
| WSL2 (Windows) | β Fully Supported | Ubuntu 22.04 LTS recommended |
| Rocky Linux 8+ | β Supported | RHEL alternative |
| AlmaLinux 8+ | β Supported | RHEL alternative |
- Inbound: UDP ports 3000-3003 must be open
- Outbound: Unrestricted to GitHub and peer nodes
- Bandwidth: Minimum 10 Mbps, recommended 100+ Mbps
- Latency: <200ms optimal
- Type: SSD (NVMe preferred) - HDD not recommended
- IOPS: 5000+ IOPS minimum
- File system: ext4 (ext3 supported but slower)
- Growth: Plan for ~10-20 GB/month
# Update system packages
sudo apt update && sudo apt upgrade -y # Debian/Ubuntu
# OR
sudo dnf update -y # Fedora/CentOS/Rocky/Alma
# Install required tools
sudo apt install -y wget curl tar gzip # Debian/Ubuntu
# OR
sudo dnf install -y wget curl tar gzip # Fedora/CentOS/Rocky/Alma# Open PowerShell as Administrator and run:
wsl --install
# Restart computer, then verify:
wsl --list --verbose
# Install Ubuntu 22.04 LTS
wsl --install -d Ubuntu-22.04
# Update WSL2 kernel
wsl --update# Ensure sudo is installed
sudo apt install -y sudo
# Add your user to sudoers (if needed)
sudo usermod -aG sudo $USER
# Verify installation
sudo whoami# Verify sudo is installed
sudo dnf install -y sudo
# Add user to wheel group (fedora/rhel equivalent of sudoers)
sudo usermod -aG wheel $USER# Verify OS and kernel
uname -a
# Check CPU cores
nproc
# Check available RAM
free -h
# Check disk space
df -h
# Check internet connectivity
curl -I https://github.com# Create directory for the node
mkdir -p ~/logos-blockchain && cd ~/logos-blockchain
# Verify space available
df -h .The node requires two files. Download them based on your architecture:
For x86_64 (most common):
# Node binary (16.47 MB)
wget https://github.com/logos-blockchain/logos-blockchain/releases/download/0.1.2/logos-blockchain-node-linux-x86_64-0.1.2.tar.gz
# Circuits (31.14 MB)
wget https://github.com/logos-blockchain/logos-blockchain/releases/download/0.1.2/logos-blockchain-circuits-v0.4.2-linux-x86_64.tar.gzFor ARM64 (e.g., Raspberry Pi 4, AWS Graviton):
# Node binary (if available)
wget https://github.com/logos-blockchain/logos-blockchain/releases/download/0.1.2/logos-blockchain-node-linux-aarch64-0.1.2.tar.gz
# Circuits (if available)
wget https://github.com/logos-blockchain/logos-blockchain/releases/download/0.1.2/logos-blockchain-circuits-v0.4.2-linux-aarch64.tar.gzAlternative with curl:
curl -L -O https://github.com/logos-blockchain/logos-blockchain/releases/download/0.1.2/logos-blockchain-node-linux-x86_64-0.1.2.tar.gz
curl -L -O https://github.com/logos-blockchain/logos-blockchain/releases/download/0.1.2/logos-blockchain-circuits-v0.4.2-linux-x86_64.tar.gzCheck download integrity:
# Verify file sizes
ls -lh *.tar.gz# Extract the circuits
tar -xzf logos-blockchain-circuits-v0.4.2-linux-x86_64.tar.gz
# Move circuits to home directory with correct name
mv logos-blockchain-circuits-v0.4.2-linux-x86_64 ~/.logos-blockchain-circuits
# Extract the node binary
tar -xzf logos-blockchain-node-linux-x86_64-0.1.2.tar.gz
# Make binary executable
chmod +x ./logos-blockchain-node
# Verify extraction
ls -lah
file ./logos-blockchain-nodeExpected output:
-rwxr-xr-x 1 user user 44694880 Apr 13 17:07 logos-blockchain-node
-rw-r--r-- 1 user user 17271536 Apr 13 17:19 logos-blockchain-node-linux-x86_64-0.1.2.tar.gz
-rw-r--r-- 1 user user 32657964 Apr 13 17:20 logos-blockchain-circuits-v0.4.2-linux-x86_64.tar.gz
drwxr-xr-x 5 user user 4096 Apr 8 08:17 .logos-blockchain-circuits
rm logos-blockchain-node-linux-x86_64-0.1.2.tar.gz
rm logos-blockchain-circuits-v0.4.2-linux-x86_64.tar.gz# Check binary format
file ./logos-blockchain-node
# Check dependencies
ldd ./logos-blockchain-node
# Test binary runs
./logos-blockchain-node --version 2>/dev/null || echo "Binary ready"Generate a default configuration by connecting to the testnet bootstrap peers:
./logos-blockchain-node init \
-p /ip4/65.109.51.37/udp/3000/quic-v1/p2p/12D3KooWFrouXfmrR4nsLMtE7wu15DoMJ6VtoUtHinREZCvbWHar \
-p /ip4/65.109.51.37/udp/3001/quic-v1/p2p/12D3KooWJRGau8M1rjT7R5e4YYsgdFhsMX35nRDtMwCDjxQkXAHz \
-p /ip4/65.109.51.37/udp/3002/quic-v1/p2p/12D3KooWQXJavMDTRscjauFSgVAB1VLB6Rzpy2uY5SU9Tk7927tb \
-p /ip4/65.109.51.37/udp/3003/quic-v1/p2p/12D3KooWSQc7CcGtvWDPF1yCbBthFnQjprfCVHmfmNDUrSmqQsU1If your node will not have a publicly reachable IP address:
./logos-blockchain-node init \
-p /ip4/65.109.51.37/udp/3000/quic-v1/p2p/12D3KooWFrouXfmrR4nsLMtE7wu15DoMJ6VtoUtHinREZCvbWHar \
-p /ip4/65.109.51.37/udp/3001/quic-v1/p2p/12D3KooWJRGau8M1rjT7R5e4YYsgdFhsMX35nRDtMwCDjxQkXAHz \
-p /ip4/65.109.51.37/udp/3002/quic-v1/p2p/12D3KooWQXJavMDTRscjauFSgVAB1VLB6Rzpy2uY5SU9Tk7927tb \
-p /ip4/65.109.51.37/udp/3003/quic-v1/p2p/12D3KooWSQc7CcGtvWDPF1yCbBthFnQjprfCVHmfmNDUrSmqQsU1 \
--no-public-ip-checkThis creates a user_config.yaml file in your working directory.
For UFW (Ubuntu/Debian):
sudo ufw allow 3000:3003/udp comment 'Logos Blockchain P2P'
sudo ufw allow 8080/tcp comment 'Logos API'
sudo ufw statusFor Firewalld (Fedora/CentOS/RHEL):
sudo firewall-cmd --permanent --add-port=3000-3003/udp
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-portsFor iptables (Manual):
sudo iptables -A INPUT -p udp --dport 3000:3003 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPTrm -r ~/.logos-blockchain-circuits
rm -r ~/.logos-blockchain-state 2>/dev/null || true
rm ~/user_config.yaml 2>/dev/null || truecd ~/logos-blockchain
./logos-blockchain-node user_config.yaml# Install screen if not available
sudo apt install -y screen # Ubuntu/Debian
# OR
sudo dnf install -y screen # Fedora/CentOS
# Create a new screen session
screen -S logos-node
# Run the node
cd ~/logos-blockchain
./logos-blockchain-node user_config.yaml
# Detach from session: Press Ctrl+A then D
# Reattach: screen -r logos-node
# List sessions: screen -ls
# Kill session: screen -X -S logos-node quit# Install tmux
sudo apt install -y tmux # Ubuntu/Debian
# OR
sudo dnf install -y tmux # Fedora/CentOS
# Create a new tmux session
cd ~/logos-blockchain
tmux new-session -d -s logos-node './logos-blockchain-node user_config.yaml'
# Attach: tmux attach -t logos-node
# Detach: Press Ctrl+B then D
# List: tmux list-sessions
# Kill: tmux kill-session -t logos-nodeCreate /etc/systemd/system/logos-blockchain.service:
sudo tee /etc/systemd/system/logos-blockchain.service > /dev/null <<EOF
[Unit]
Description=Logos Blockchain Node
After=network.target
Wants=network-online.target
[Service]
Type=simple
User=logos
Group=logos
WorkingDirectory=/home/logos/logos-blockchain
ExecStart=/home/logos/logos-blockchain/logos-blockchain-node /home/logos/logos-blockchain/user_config.yaml
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
# Security hardening
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=yes
ReadWritePaths=/home/logos/logos-blockchain ~/.logos-blockchain-circuits
# Resource limits
LimitNOFILE=65536
LimitNPROC=4096
[Install]
WantedBy=multi-user.target
EOFSetup and start the service:
# Create logos user
sudo useradd -m -s /bin/bash logos 2>/dev/null || true
# Copy node directory
sudo mkdir -p /home/logos/logos-blockchain
sudo cp ~/logos-blockchain/* /home/logos/logos-blockchain/
sudo cp -r ~/.logos-blockchain-circuits /home/logos/
sudo chown -R logos:logos /home/logos/logos-blockchain
sudo chown -R logos:logos /home/logos/.logos-blockchain-circuits
# Enable and start service
sudo systemctl daemon-reload
sudo systemctl enable logos-blockchain
sudo systemctl start logos-blockchain
sudo systemctl status logos-blockchain
# View logs
sudo journalctl -u logos-blockchain -f# Create Dockerfile
cat > Dockerfile <<EOF
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y wget && rm -rf /var/lib/apt/lists/*
WORKDIR /app
# Download binaries
RUN wget https://github.com/logos-blockchain/logos-blockchain/releases/download/0.1.2/logos-blockchain-node-linux-x86_64-0.1.2.tar.gz && \
wget https://github.com/logos-blockchain/logos-blockchain/releases/download/0.1.2/logos-blockchain-circuits-v0.4.2-linux-x86_64.tar.gz && \
tar -xzf logos-blockchain-node-linux-x86_64-0.1.2.tar.gz && \
tar -xzf logos-blockchain-circuits-v0.4.2-linux-x86_64.tar.gz && \
mv logos-blockchain-circuits-v0.4.2-linux-x86_64 ~/.logos-blockchain-circuits && \
chmod +x logos-blockchain-node
EXPOSE 3000-3003/udp 8080
ENTRYPOINT ["./logos-blockchain-node"]
EOF
# Build image
docker build -t logos-blockchain:0.1.2 .
# Run container
docker run -d \
--name logos-node \
-v ~/.logos-blockchain-circuits:/root/.logos-blockchain-circuits \
-v /path/to/config:/app/config \
-p 3000-3003:3000-3003/udp \
-p 8080:8080 \
logos-blockchain:0.1.2 /app/user_config.yamlWhen you restart your computer or need to restart the node, here are the commands based on your setup:
# Start the node
sudo systemctl start logos-blockchain
# Check if it's running
sudo systemctl status logos-blockchain
# View logs
sudo journalctl -u logos-blockchain -fEnable auto-start on boot:
sudo systemctl enable logos-blockchainAfter rebooting your computer, the node will start automatically! β
cd ~/logos-blockchain
./logos-blockchain-node user_config.yaml# Create and attach to a new screen session
screen -S logos-node
# Run the node
cd ~/logos-blockchain
./logos-blockchain-node user_config.yaml
# Detach: Press Ctrl+A then D
# To reattach later:
screen -r logos-node
# List all sessions:
screen -ls# Create a new tmux session (runs in background)
cd ~/logos-blockchain
tmux new-session -d -s logos-node './logos-blockchain-node user_config.yaml'
# To view it:
tmux attach -t logos-node
# Detach: Press Ctrl+B then D
# List sessions:
tmux list-sessions
# Kill session:
tmux kill-session -t logos-node| Method | Auto-Start | Command | Pros | Cons |
|---|---|---|---|---|
| Systemd | β Yes | sudo systemctl start logos-blockchain |
Best for production, auto-restarts on failure | Requires setup |
| Foreground | β No | ./logos-blockchain-node user_config.yaml |
Simple, see logs directly | Must stay in terminal |
| Screen | β No | screen -S logos-node |
Easy detach/reattach | Manual restart needed |
| Tmux | β No | tmux new-session -d -s logos-node |
More features than screen | Manual restart needed |
Use Systemd for production setups:
# Enable auto-start on boot
sudo systemctl enable logos-blockchain
# Start now
sudo systemctl start logos-blockchain
# Check status
sudo systemctl status logos-blockchainThen after every computer restart, your node will automatically start! π
curl -w "\n" http://localhost:8080/cryptarchia/infoExpected response:
{
"lib": "c598a17888d3654d829cf0efd9bbc4a3d4b0f17e0c138e440a809e12c9bcccfe",
"lib_slot": 971267,
"tip": "ca7ce410e3c4b542eddafec06a77d7190aae2350d3407e937c3eaff1c655a56d",
"slot": 971854,
"height": 49217,
"mode": "Online"
}Status Meanings:
mode: "Bootstrapping"- Syncing with network (slot and height increasing)mode: "Online"- Fully synced and ready to produce blocks
#!/bin/bash
# Save as monitor.sh and chmod +x monitor.sh
while true; do
clear
echo "=== Logos Blockchain Node Monitor ==="
echo "Time: $(date)"
echo ""
response=$(curl -s http://localhost:8080/cryptarchia/info)
mode=$(echo $response | grep -o '"mode":"[^"]*' | cut -d'"' -f4)
slot=$(echo $response | grep -o '"slot":[0-9]*' | cut -d':' -f2)
height=$(echo $response | grep -o '"height":[0-9]*' | cut -d':' -f2)
echo "Mode: $mode"
echo "Slot: $slot"
echo "Height: $height"
echo ""
# System resources
echo "=== System Resources ==="
ps aux | grep logos-blockchain-node | grep -v grep | awk '{printf "CPU: %.1f%%, Memory: %.1f%% (%.0fMB)\n", $3, $4, $6/1024}'
sleep 5
doneRun it:
./monitor.sh# Last 50 lines
tail -n 50 *.log
# Follow logs in real-time
tail -f *.log
# Search logs
grep -i "error\|warning" *.log
# For systemd service
sudo journalctl -u logos-blockchain -f# Real-time process monitor
top -p $(pgrep -f logos-blockchain-node)
# Disk usage
du -sh ~/.logos-blockchain-circuits
du -sh ~/logos-blockchain
# Network connections
netstat -tuln | grep -E '3000|3001|3002|3003|8080'
# Open files
lsof -p $(pgrep -f logos-blockchain-node)grep -A3 known_keys user_config.yamlOutput example:
known_keys:
43c3379eaabf3977e4c81c22fe221f2fa13a11db06e8174c2959427bc1aa3720: ...
de3233cec107e6589f83d4f3094caa65c633b5b33601211353779dc01972ca14: ...Copy any of the listed key IDs - this is your wallet address.
- Visit Logos Testnet Faucet
- Enter credentials provided by Logos team on Discord
- Paste your wallet key
- Submit request
Wait 1-2 minutes for transaction to land in a block:
curl -w "\n" http://localhost:8080/wallet/<my_key>/balanceReplace <my_key> with your wallet key.
Expected response:
{
"tip": "71b96a69acf603ff762d5b2e06318edd99a3c14a3cf5cd0510be4f479d89e6d8",
"balance": 1000,
"notes": {
"cb38f536b30e583a2dd836ed963c3ad95b26a758a20463ba0cb7d44ca6de8602": 1000
},
"address": "43c3379eaabf3977e4c81c22fe221f2fa13a11db06e8174c2959427bc1aa3720"
}After receiving funds, your node will automatically produce blocks approximately 3.5 hours (2 epochs) later.
Timeline:
- β Receive funds via faucet
- β³ Wait ~3.5 hours
- π Node automatically produces blocks
Monitor production:
# Check node status
curl -w "\n" http://localhost:8080/cryptarchia/info
# Compare against fleet on dashboard
# https://testnet.blockchain.logos.co/web/Publish messages to the blockchain using the built-in text sequencer:
cd ~/logos-blockchain
./logos-blockchain-node inscribeFollow the interactive prompts to enter and publish your messages.
For production nodes, optimize network performance:
# Increase file descriptors
sudo sysctl -w fs.file-max=2097152
sudo sysctl -w fs.nr_open=2097152
# Optimize network buffers
sudo sysctl -w net.core.rmem_max=134217728
sudo sysctl -w net.core.wmem_max=134217728
sudo sysctl -w net.ipv4.tcp_rmem="4096 87380 134217728"
sudo sysctl -w net.ipv4.tcp_wmem="4096 65536 134217728"
# Increase connection backlog
sudo sysctl -w net.core.somaxconn=4096
sudo sysctl -w net.ipv4.tcp_max_syn_backlog=8192
# Persist settings
sudo tee -a /etc/sysctl.conf > /dev/null <<EOF
fs.file-max=2097152
fs.nr_open=2097152
net.core.rmem_max=134217728
net.core.wmem_max=134217728
net.ipv4.tcp_rmem=4096 87380 134217728
net.ipv4.tcp_wmem=4096 65536 134217728
net.core.somaxconn=4096
net.ipv4.tcp_max_syn_backlog=8192
EOF# Enable SSD TRIM (if supported)
sudo fstrim -v /
# Check I/O scheduler
cat /sys/block/sda/queue/scheduler
# Change to deadline scheduler (for SSD)
echo deadline | sudo tee /sys/block/sda/queue/scheduler# Pin process to specific CPUs
taskset -pc 0-7 $(pgrep -f logos-blockchain-node)
# Verify
taskset -pc $(pgrep -f logos-blockchain-node)Binary not executable:
chmod +x ./logos-blockchain-node
file ./logos-blockchain-nodeCircuits not found:
ls -la ~/.logos-blockchain-circuits
# If missing:
tar -xzf logos-blockchain-circuits-v0.4.2-linux-x86_64.tar.gz
mv logos-blockchain-circuits-v0.4.2-linux-x86_64 ~/.logos-blockchain-circuitsInsufficient disk space:
df -h
# Free up space or expand partitionLibrary dependencies missing:
ldd ./logos-blockchain-node
# Install missing dependencies
sudo apt install libssl-dev # Ubuntu/DebianBehind firewall:
# Open ports
sudo ufw allow 3000:3003/udp
sudo ufw allow 8080/tcp
# Reinit with --no-public-ip-check
./logos-blockchain-node init ... --no-public-ip-checkBootstrap peers unreachable:
# Check connectivity
ping 65.109.51.37
curl -I https://github.com
# Check DNS
nslookup github.comNode not running:
ps aux | grep logos-blockchain-node
# Start node if not runningWrong port:
grep -i "port\|listen" user_config.yaml
netstat -tuln | grep 8080Expected: 2-4 GB after full sync.
If higher:
# Check memory usage
top -p $(pgrep -f logos-blockchain-node)
# Restart node
killall logos-blockchain-nodeNot syncing:
# Check logs
tail -f *.log | grep -i "error\|sync"
# Verify peers
curl -s http://localhost:8080/cryptarchia/info
# Restart with fresh config
rm user_config.yaml
./logos-blockchain-node init ... --no-public-ip-check# Check status
sudo systemctl status logos-blockchain
# View logs
sudo journalctl -u logos-blockchain -e
# Restart
sudo systemctl restart logos-blockchain
# Check for errors
sudo systemctl status logos-blockchain --full# Check WSL2 connectivity
wsl -l -v
# Restart WSL2
wsl --shutdown
# Then reopen WSL2 terminal
# Forward ports (if needed)
netsh interface portproxy add v4tov4 listenport=3000 listenaddress=0.0.0.0 connectport=3000 connectaddress=<WSL2_IP>- GitHub Repository: https://github.com/logos-blockchain/logos-blockchain
- Release Page: https://github.com/logos-blockchain/logos-blockchain/releases/tag/0.1.2
- Testnet Dashboard: https://testnet.blockchain.logos.co/web/
- Testnet Faucet: https://testnet.blockchain.logos.co/web/faucet/
- Discord Community: https://discord.com/channels/973324189794697286/1468535289604735038
- Linux Kernel Documentation: https://www.kernel.org/doc/
- Systemd Documentation: https://www.freedesktop.org/wiki/Software/systemd/
Having issues? Reach out to the Logos Blockchain team on Discord.
This guide is provided as-is for educational purposes. See the Logos Blockchain Repository for license details.
Last Updated: April 24, 2026 Node Version: 0.1.2 Circuits Version: 0.4.2 Supported Platforms: Linux (Ubuntu, Debian, Fedora, CentOS, RHEL, Rocky, AlmaLinux), WSL2