Skip to main content

Default config

Here is the default configuration file for Numeraire SwissKnife. You can find it on the GitHub repository as well.

note

The default configuration file is a toml file. SwissKnife supports toml, yaml and json config files.

Some optional and sensitive values are not added to the default configuration file. You can find them in the .env.example file and in the configuration values.

# App
invoice_expiry = "12h"
domain = "numeraire.tech"
host = "https://api.numeraire.tech"
fee_buffer = 0.02
bitcoin_address_type = "p2wpkh"
ln_provider = "cln_grpc"
auth_provider = "jwt"
dashboard_dir = "/var/www/swissknife-dashboard"

# Web server
[web]
addr = "0.0.0.0:3000"
request_timeout = "60s"

# Core Lightning provider
[cln_grpc_config]
endpoint = "https://localhost:11002"
certs_dir = "certs/lightningd"
maxfeepercent = 0.5
payment_timeout = "60s"
payment_exemptfee = 5000

[cln_rest_config]
endpoint = "http://localhost:3010"
# ca_cert_path = "certs/lightningd/ca.cert" # Optional for HTTP
rune = "CHANGE_ME" # Recommended to use secret instead
connect_timeout = "5s"
timeout = "90s"
connection_verbose = true
accept_invalid_certs = false
accept_invalid_hostnames = false
maxfeepercent = 0.5
payment_timeout = "60s"
payment_exemptfee = 5000
ws_min_reconnect_delay = "1s"
ws_max_reconnect_delay = "30s"

# LND Lightning provider
[lnd_rest_config]
host = "localhost:8080"
macaroon_path = "certs/lnd/admin.macaroon"
# ca_cert_path = "certs/lnd/tls.cert"" # Optional for HTTP
connect_timeout = "5s"
timeout = "90s"
connection_verbose = true
accept_invalid_certs = false
accept_invalid_hostnames = false
payment_timeout = "60s"
fee_limit_msat = 25000
reorg_buffer_blocks = 2

[lnd_grpc_config]
endpoint = "https://localhost:10009"
cert_path = "certs/lnd/tls.cert"
macaroon_path = "certs/lnd/admin.macaroon"
payment_timeout = "60s"
fee_limit_msat = 25000
reorg_buffer_blocks = 2

# Logging
[logging]
format = "json"
ansi = false
line_number = false
thread_ids = false
thread_names = false
level = "info"
# Optional `tracing` env-filter directives. When empty/missing, `level` is used globally.
# Example: "swissknife=debug"
filter = "warn,swissknife=info,sea_orm_migration=info"
file = false

# Authentication
[oauth2]
domain = "auth.numeraire.tech"
audience = "https://swissknife.numeraire.tech/api/v1"
jwks_refresh_interval = "1h"
leeway = "60s"

[jwt]
token_expiry = "1h"
secret = "CHANGE_ME" # Recommended to use secret instead

# Database
[database]
url = "sqlite://storage/swissknife.db?mode=rwc"
max_lifetime = "30m"
idle_timeout = "5m"
max_connections = 10
min_connections = 0
acquire_timeout = "5s"
connect_timeout = "30s"
sqlx_logging = false
# SQLite-only: how long a writer waits for the lock before failing with SQLITE_BUSY.
# Ignored for Postgres.
busy_timeout = "10s"

This file should ideally not be modified directly. Instead, you should create a new configuration file (called development.toml or production.toml) and override the default values. You can find more information on how to do this in the configuration guide.