Qubic core lite node with automatic snapshot downloads, health monitoring, and self-healing
10K+
Run a Qubic network node in Docker with automatic snapshot downloads, health monitoring, and self-healing restarts.
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:
On startup the orchestrator:
| Port | Protocol | Description |
|---|---|---|
| 21841 | TCP | P2P (mainnet) |
| 31841 | TCP | P2P (testnet) |
| 41841 | HTTP | Qubic node API |
| 8080 | HTTP | Management API (localhost only by default) |
| Variable | Default | Description |
|---|---|---|
QUBIC_PEERS | "" | Comma-separated peer IPs (Autopopulated by default) |
QUBIC_SECURITY_TICK | 32 | Skip contract state verification interval |
QUBIC_TICKING_DELAY | (none) | Ticking delay in ms |
QUBIC_LOG_LEVEL | INFO | Log level (DEBUG, INFO, WARNING, ERROR) |
QUBIC_LOG_FORMAT | json | Log format (json or text) |
QUBIC_FORCE_DOWNLOAD | false | Force snapshot re-download on startup |
QUBIC_THREADS | (auto) | Number of processing threads |
QUBIC_SOLUTION_THREADS | (auto) | Number of mining threads |
| Variable | Default | Description |
|---|---|---|
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 |
| Variable | Default | Description |
|---|---|---|
QUBIC_WATCHDOG__ENABLED | true | Enable automatic health monitoring |
QUBIC_WATCHDOG__MAX_RESTARTS | 5 | Max auto-restarts before giving up |
QUBIC_WATCHDOG__STARTUP_GRACE_SECONDS | 300 | Grace period before health checks start |
QUBIC_WATCHDOG__STUCK_THRESHOLD_SECONDS | 300 | Seconds without tick progress before restart |
QUBIC_WATCHDOG__RESTART_COOLDOWN_SECONDS | 600 | Minimum time between restarts |
| Variable | Default | Description |
|---|---|---|
QUBIC_ALERTING__ENABLED | false | Enable webhook alerts |
QUBIC_ALERTING__WEBHOOK_URL | "" | Webhook URL (Slack, Discord, etc.) |
QUBIC_ALERTING__RATE_LIMIT_SECONDS | 300 | Minimum interval between duplicate alerts |
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
| Key | Description |
|---|---|
f2 | Display node status |
f3 | Display mining race state |
f4 | Drop all connections (reconnect to peers) |
f5 | Issue new votes |
f6 | Save state to disk |
f7 | Force epoch switching |
f8 | Save tick storage snapshot |
f9 | Decrease latestCreatedTick by 1 |
f10 | Allow epoch transition with memory cleanup |
f11 | Toggle network mode (static/dynamic) |
f12 | Switch MAIN/aux mode |
p | Cycle console logging verbosity |
f | Force skip computer digest check |
s | Force skip security tick check |
esc | Shutdown node |
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
The built-in watchdog monitors the node and automatically restarts it when:
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.
Configure a webhook URL to receive alerts for node events:
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
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.
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.
Content type
Image
Digest
sha256:fbbd192a5…
Size
196.1 MB
Last updated
3 days ago
docker pull qubiccore/lite:E222.1-fork