This guide will get the Fluree server running on your machine in minutes.
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/fluree/db/releases/latest/download/fluree-db-cli-installer.sh | shbrew install fluree/tap/flureeOpen PowerShell and run:
irm https://github.com/fluree/db/releases/latest/download/fluree-db-cli-installer.ps1 | iexThen open a new PowerShell session and verify fluree --version. The installer adds %USERPROFILE%\bin to your PATH. The binary is unsigned, so Windows SmartScreen may prompt on first run — click More info → Run anyway.
Download the latest release for your platform from GitHub Releases:
# Linux (x86_64)
curl -L https://github.com/fluree/db/releases/latest/download/fluree-db-cli-x86_64-unknown-linux-gnu.tar.xz | tar xJ
chmod +x fluree-db-cli-x86_64-unknown-linux-gnu/fluree
# macOS (Apple Silicon)
curl -L https://github.com/fluree/db/releases/latest/download/fluree-db-cli-aarch64-apple-darwin.tar.xz | tar xJ
chmod +x fluree-db-cli-aarch64-apple-darwin/flureeIf you have Rust installed:
# Clone the repository
git clone https://github.com/fluree/db.git
cd db
# Build the CLI (includes embedded server)
cargo build --release -p fluree-db-cli
# Binary will be at target/release/fluree# Pull the image
docker pull fluree/server:latest
# Run the container
docker run -p 8090:8090 fluree/server:latestFor configuration (mounted JSON-LD/TOML config files, env vars, persistent volumes, S3+DynamoDB, query peers, full Compose example), see Running with Docker.
Start the server with in-memory storage (data is lost on restart):
fluree server runYou should see output like:
INFO fluree_db_server: Starting Fluree server
INFO fluree_db_server: Storage mode: memory
INFO fluree_db_server: Server listening on 0.0.0.0:8090
For persistent storage, specify a storage path:
fluree server run --storage-path /var/lib/flureefluree server run --listen-addr 0.0.0.0:9090fluree server run --log-level debugcurl http://localhost:8090/healthExpected response:
{
"status": "ok",
"version": "4.0.4"
}curl -X POST http://localhost:8090/v1/fluree/create \
-H "Content-Type: application/json" \
-d '{"ledger": "test:main"}'curl -X POST "http://localhost:8090/v1/fluree/insert" \
-H "Content-Type: application/json" \
-H "fluree-ledger: test:main" \
-d '{
"@context": {"ex": "http://example.org/"},
"@id": "ex:alice",
"ex:name": "Alice"
}'curl -X POST "http://localhost:8090/v1/fluree/query" \
-H "Content-Type: application/json" \
-d '{
"from": "test:main",
"select": {"?s": ["*"]},
"where": [["?s", "ex:name", "?name"]]
}'Default server endpoints:
| Endpoint | Method | Description |
|---|---|---|
/health |
GET | Health check |
/v1/fluree/create |
POST | Create a ledger |
/v1/fluree/drop |
POST | Drop a ledger |
/v1/fluree/query |
GET/POST | Execute queries |
/v1/fluree/insert |
POST | Insert data |
/v1/fluree/update |
POST | Update with WHERE/DELETE/INSERT |
/v1/fluree/events |
GET | SSE event stream |
See the API Reference for complete endpoint documentation.
Memory (default):
- Fast, in-process storage
- Data lost on restart
- Best for development and testing
File (with --storage-path):
- Persistent local file storage
- Data survives restarts
- Best for single-server deployments
All options can be set via CLI flags or environment variables:
# CLI flag
fluree server run --storage-path /data --log-level debug
# Environment variables
export FLUREE_STORAGE_PATH=/data
export FLUREE_LOG_LEVEL=debug
fluree server runSee Configuration for all options.
fluree server run --log-level debugfluree server run \
--storage-path /var/lib/fluree \
--indexing-enabled \
--events-auth-mode required \
--events-auth-trusted-issuers did:key:z6Mk...fluree server run \
--storage-path /var/lib/fluree \
--indexing-enabledFor the full Docker guide — image internals, configuration via env vars vs mounted JSON-LD/TOML config files, persistent volumes, LRU cache and indexing tuning, S3+DynamoDB connection configs, query peers, and a production-ready Compose example — see Running with Docker.
Minimal persistent run:
docker run -d --name fluree \
-p 8090:8090 \
-v fluree-data:/var/lib/fluree \
fluree/server:latest# Use a different port
fluree server run --listen-addr 0.0.0.0:9090sudo chown -R $USER:$USER /var/lib/fluree
chmod -R 755 /var/lib/flureeCheck logs with debug level:
fluree server run --log-level debugVerify the server is running and check the listen address:
# Listen on all interfaces (not just localhost)
fluree server run --listen-addr 0.0.0.0:8090Now that your server is running:
- Create a Ledger - Set up your first database
- Write Data - Insert your first records
- Query Data - Retrieve and explore your data
For production deployments:
- Configuration - All server options
- Query Peers - Horizontal scaling
- Admin Authentication - Protect admin endpoints