IceIce
Home
  • Getting Started

    • Quick Start
    • Core Concepts
    • Architecture
  • SDK Guide

    • Java SDK
    • Go SDK
    • Python SDK
  • Reference

    • Node Types
    • Roam API
    • Mock
    • Server Config
    • Client Config
Download
Playground
FAQ
  • Changelog
  • Upgrade Guide
Sponsor
Community
GitHub
  • English
  • 简体中文
Home
  • Getting Started

    • Quick Start
    • Core Concepts
    • Architecture
  • SDK Guide

    • Java SDK
    • Go SDK
    • Python SDK
  • Reference

    • Node Types
    • Roam API
    • Mock
    • Server Config
    • Client Config
Download
Playground
FAQ
  • Changelog
  • Upgrade Guide
Sponsor
Community
GitHub
  • English
  • 简体中文
  • Reference

    • Node Types
    • Roam API
    • Server Config
    • Client Config
    • Mock Execution

Server Configuration Reference

Ice Server supports both command line arguments and environment variables for configuration. Environment variables take precedence.

Configuration Options

ArgumentEnvironment VariableTypeDefaultDescription
--portICE_PORTint8121Server port
--storage-pathICE_STORAGE_PATHstring./ice-dataFile storage path
--client-timeoutICE_CLIENT_TIMEOUTint30Client inactivity timeout (seconds). Clients that haven't reported a heartbeat within this time are marked offline
--version-retentionICE_VERSION_RETENTIONint1000Number of version files to retain. Excess versions are cleaned up during recycling
--recycle-cronICE_RECYCLE_CRONstring0 3 * * *Cron expression for the recycling scheduled task
--recycle-wayICE_RECYCLE_WAYstringhardRecycling method. soft: mark as deleted; hard: physically delete
--recycle-protect-daysICE_RECYCLE_PROTECT_DAYSint1Recycling protection days. Versions within the protection period will not be recycled
--modeICE_MODEstringopenRunning mode. open: normal mode; controlled: controlled mode, prevents creating new Rules and nodes via UI, only allows import and referencing existing nodes
--publish-targetsICE_PUBLISH_TARGETSstringPublish target list, format name1=url1,name2=url2. When configured, the export modal shows a "Publish to..." button to push data to remote Servers

Configuration Examples

Command Line Arguments

./ice-server --port 8121 --storage-path ./ice-data --version-retention 500

# Controlled mode + publish targets
./ice-server --mode controlled --publish-targets "prod=https://prod.example.com,staging=https://staging.example.com"

Environment Variables (Recommended for Docker)

docker run -d --name ice-server \
  -p 8121:8121 \
  -e ICE_PORT=8121 \
  -e ICE_STORAGE_PATH=/app/ice-data \
  -e ICE_VERSION_RETENTION=500 \
  -v ./ice-data:/app/ice-data \
  waitmoon/ice-server:latest

Docker Compose

version: '3.8'
services:
  ice-server:
    image: waitmoon/ice-server:latest
    ports:
      - "8121:8121"
    environment:
      ICE_STORAGE_PATH: /app/ice-data
      ICE_VERSION_RETENTION: 500
      ICE_RECYCLE_CRON: "0 3 * * *"
      ICE_MODE: controlled
      ICE_PUBLISH_TARGETS: "prod=https://prod.example.com"
    volumes:
      - ./ice-data:/app/ice-data

Debug Log Levels

The debug field in Meta is a bitmask. Combine values by adding them to control log output:

ValueNameDescription
1IN_ROAMPrint Roam contents before execution
2PROCESSPrint execution process
4OUT_ROAMPrint Roam contents after execution

For example, debug = 3 prints both IN_ROAM (1) and PROCESS (2).

Edit this page on GitHub
Last Updated: 3/25/26, 2:44 PM
Contributors: waitmoon, Claude Opus 4.6
Prev
Roam API
Next
Client Config