asmo 75a3e6d2c7 Prometheus crate (#883) 1 ماه پیش
..
src 75a3e6d2c7 Prometheus crate (#883) 1 ماه پیش
Cargo.toml 75a3e6d2c7 Prometheus crate (#883) 1 ماه پیش
README.md 761ed82554 feat: log to file (#967) 1 ماه پیش
build.rs 9ab86fabfe Cdk ldk node (#904) 1 ماه پیش
example.config.toml 75a3e6d2c7 Prometheus crate (#883) 1 ماه پیش

README.md

CDK Mintd

crates.io Documentation MIT licensed

ALPHA This library is in early development, the API will change and should be used with caution.

Cashu mint daemon implementation for the Cashu Development Kit (CDK). This binary provides a complete Cashu mint server implementation with support for multiple database backends and Lightning Network integrations.

Features

  • Multiple Database Backends: SQLite and PostgreSQL
  • Lightning Network Integration: Support for CLN, LND, LNbits, and test backends
  • Authentication: Optional user authentication with OpenID Connect
  • Management RPC: gRPC interface for mint management
  • Docker Support: Ready-to-use Docker configurations

Installation

From crates.io:

cargo install cdk-mintd

From source:

cargo install --path .

Quick Start

Using SQLite (Default)

# Start with SQLite (no additional setup required)
cdk-mintd

Using PostgreSQL

# Set environment variables
export CDK_MINTD_DATABASE=postgres
export CDK_MINTD_DATABASE_URL="postgresql://postgres:password@localhost:5432/cdk_mint"

# Start the mint
cdk-mintd

Using Docker

# SQLite
docker-compose up

# PostgreSQL
docker-compose -f docker-compose.postgres.yaml up

Configuration

The mint can be configured through environment variables or a configuration file. See example.config.toml for all available options.

Database Configuration

SQLite (Default)

[database]
engine = "sqlite"

PostgreSQL

[database]
engine = "postgres"

Set CDK_MINTD_DATABASE_URL environment variable for connection string.

ReDB

[database]
engine = "redb"

Lightning Backend Configuration

[ln]
ln_backend = "fakewallet"  # Options: cln, lnd, lnbits, fakewallet

Logging Configuration

You can configure where mintd outputs its logs using the [info.logging] section in your config file or environment variables:

Config file:

[info.logging]
# Where to output logs: "stdout", "file", or "both" (default: "both")
output = "both"
# Log level for console output (default: "info")
console_level = "info"  
# Log level for file output (default: "debug")
file_level = "debug"

Environment variables:

# Where to output logs: "stdout", "file", or "both" (default: "both")
export CDK_MINTD_LOGGING_OUTPUT="both"
# Log level for console output (default: "info")
export CDK_MINTD_LOGGING_CONSOLE_LEVEL="debug"
# Log level for file output (default: "debug")
export CDK_MINTD_LOGGING_FILE_LEVEL="debug"

Available logging outputs:

  • "stdout" - Output logs only to console/terminal (stderr)
  • "file" - Output logs only to rotating daily log files in <work_dir>/logs/
  • "both" - Output logs to both console and files (default behavior)

Available log levels: error, warn, info, debug, trace

Examples:

Console only with debug level:

export CDK_MINTD_LOGGING_OUTPUT="stdout"
export CDK_MINTD_LOGGING_CONSOLE_LEVEL="debug"

File only with debug level:

[info.logging]
output = "file"
file_level = "debug"

Both console (warn) and file (debug):

export CDK_MINTD_LOGGING_OUTPUT="both"
export CDK_MINTD_LOGGING_CONSOLE_LEVEL="warn"
export CDK_MINTD_LOGGING_FILE_LEVEL="debug"

Usage

# Start the mint with default configuration
cdk-mintd

# Start with custom config file
cdk-mintd --config /path/to/config.toml

# Start with specific work directory
cdk-mintd --work-dir /path/to/work/dir
# Disable logging entirely
cdk-mintd --enable-logging false

# Show help
cdk-mintd --help

Environment Variables

Key environment variables:

  • CDK_MINTD_DATABASE: Database engine (sqlite/postgres/redb)
  • CDK_MINTD_DATABASE_URL: PostgreSQL connection string
  • CDK_MINTD_LN_BACKEND: Lightning backend type
  • CDK_MINTD_LISTEN_HOST: Host to bind to
  • CDK_MINTD_LISTEN_PORT: Port to bind to

Documentation

License

This project is licensed under the MIT License.