CDK Mintd
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 stringCDK_MINTD_LN_BACKEND: Lightning backend typeCDK_MINTD_LISTEN_HOST: Host to bind toCDK_MINTD_LISTEN_PORT: Port to bind to
Documentation
License
This project is licensed under the MIT License.