qubiccore/lite

By qubiccore

Updated 3 days ago

Qubic core lite node with automatic snapshot downloads, health monitoring, and self-healing

Image
Networking
1

10K+

qubiccore/lite repository overview

Qubic Core Lite

Run a Qubic network node in Docker with automatic snapshot downloads, health monitoring, and self-healing restarts.

Quick Start

docker run -d --name qubic-node \
  -p 21841:21841 \
  -p 41841:41841 \
  -v qubic-data:/qubic \
  qubiccore/lite:latest

Or with Docker Compose:

services:
  qubic-node:
    image: qubiccore/lite:latest
    restart: unless-stopped
    ports:
      - "21841:21841"   # P2P
      - "41841:41841"   # HTTP API
    volumes:
      - qubic-data:/qubic

  # use watchtower to enable auto update of core lite
  watchtower:
    image: containrrr/watchtower
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      WATCHTOWER_POLL_INTERVAL: 60
      DOCKER_API_VERSION: "1.44"
    command: qubic-node


volumes:
  qubic-data:

What It Does

On startup the orchestrator:

  1. Discovers the current epoch from the Qubic network API
  2. Downloads the latest snapshot (or epoch files) if local state is missing or outdated
  3. Starts the Qubic node with the configured parameters
  4. Monitors health via a built-in watchdog that detects crashes, stuck ticks, and consensus misalignment
  5. Automatically restarts the node when problems are detected

Ports

PortProtocolDescription
21841TCPP2P (mainnet)
31841TCPP2P (testnet)
41841HTTPQubic node API
8080HTTPManagement API (localhost only by default)

Environment Variables

General
VariableDefaultDescription
QUBIC_PEERS""Comma-separated peer IPs (Autopopulated by default)
QUBIC_SECURITY_TICK32Skip contract state verification interval
QUBIC_TICKING_DELAY(none)Ticking delay in ms
QUBIC_LOG_LEVELINFOLog level (DEBUG, INFO, WARNING, ERROR)
QUBIC_LOG_FORMATjsonLog format (json or text)
QUBIC_FORCE_DOWNLOADfalseForce snapshot re-download on startup
QUBIC_THREADS(auto)Number of processing threads
QUBIC_SOLUTION_THREADS(auto)Number of mining threads
Operator (optional)
VariableDefaultDescription
QUBIC_OPERATOR_SEED""Operator seed for node management
QUBIC_OPERATOR""Operator public identity
QUBIC_HTTP_PASSCODE""Passcode for the HTTP API
QUBIC_SEEDS""Comma-separated computor seeds
QUBIC_OPERATOR_ALIAS""Operator alias name
QUBIC_READER_PASSCODE""Reader API passcode
QUBIC_READER_PASSCODE""Reader API passcode
Watchdog
VariableDefaultDescription
QUBIC_WATCHDOG__ENABLEDtrueEnable automatic health monitoring
QUBIC_WATCHDOG__MAX_RESTARTS5Max auto-restarts before giving up
QUBIC_WATCHDOG__STARTUP_GRACE_SECONDS300Grace period before health checks start
QUBIC_WATCHDOG__STUCK_THRESHOLD_SECONDS300Seconds without tick progress before restart
QUBIC_WATCHDOG__RESTART_COOLDOWN_SECONDS600Minimum time between restarts
Alerting (optional)
VariableDefaultDescription
QUBIC_ALERTING__ENABLEDfalseEnable webhook alerts
QUBIC_ALERTING__WEBHOOK_URL""Webhook URL (Slack, Discord, etc.)
QUBIC_ALERTING__RATE_LIMIT_SECONDS300Minimum interval between duplicate alerts

Container Commands

The built-in orchestrator-ctl CLI lets you manage the node via docker exec:

# Check node status (epoch, tick, health, peers)
docker exec qubic-node orchestrator-ctl status

# Quick health check
docker exec qubic-node orchestrator-ctl health

# Restart the Qubic node binary
docker exec qubic-node orchestrator-ctl restart

# Send a key command to the Qubic process
docker exec qubic-node orchestrator-ctl send-key f4

# List all available key commands
docker exec qubic-node orchestrator-ctl keys
Available Key Commands
KeyDescription
f2Display node status
f3Display mining race state
f4Drop all connections (reconnect to peers)
f5Issue new votes
f6Save state to disk
f7Force epoch switching
f8Save tick storage snapshot
f9Decrease latestCreatedTick by 1
f10Allow epoch transition with memory cleanup
f11Toggle network mode (static/dynamic)
f12Switch MAIN/aux mode
pCycle console logging verbosity
fForce skip computer digest check
sForce skip security tick check
escShutdown node

Management API

The orchestrator also exposes a local HTTP API on port 8080 (localhost only by default).

# Health check
curl http://localhost:8080/health

# Detailed node status (epoch, tick, health, votes)
curl http://localhost:8080/status

# Manually restart the node
curl -X POST http://localhost:8080/restart

# Send a key command to the Qubic process
curl -X POST -d '{"key":"f4"}' http://localhost:8080/send-key

# List available key commands
curl http://localhost:8080/keys

Watchdog

The built-in watchdog monitors the node and automatically restarts it when:

  • Crash detected — the Qubic process exits unexpectedly
  • Stuck — no tick progression for 5 minutes (configurable)
  • Misaligned — consensus misalignment detected over consecutive polls

The watchdog respects a startup grace period (5 minutes), enforces cooldown between restarts, and stops after reaching the max restart limit to prevent infinite loops. All restart events are logged and optionally sent as webhook alerts.

Alerting

Configure a webhook URL to receive alerts for node events:

  • Node crashes, restarts, and recovery
  • Stuck or misaligned state detection
  • Epoch transitions
  • Max restarts exceeded (requires manual intervention)

Alerts include node context (epoch, tick, health state, restart count) and are rate-limited to prevent flooding.

docker run -d --name qubic-node \
  -p 21841:21841 \
  -v qubic-data:/qubic \
  -e QUBIC_ALERTING__ENABLED=true \
  -e QUBIC_ALERTING__WEBHOOK_URL="https://hooks.slack.com/services/..." \
  qubiccore/lite:latest

Data Persistence

Mount a volume to /qubic to persist node state across container restarts:

-v qubic-data:/qubic

This directory contains epoch state files (spectrum, universe, contracts), snapshot data, and node configuration. Without a persistent volume, the node will re-download all state on every container restart.

Health Check

The image includes a Docker health check that queries the node's HTTP API every 30 seconds with a 5-minute startup grace period. Use docker inspect or your orchestration platform to monitor container health.

Requirements

  • CPU: x86_64 (AVX2 support recommended)
  • RAM: 64GB minimum for mainnet
  • Disk: 50GB+ for state files
  • Network: Stable connection with port 21841 accessible for P2P

Tag summary

Content type

Image

Digest

sha256:fbbd192a5

Size

196.1 MB

Last updated

3 days ago

docker pull qubiccore/lite:E222.1-fork