Signer Configuration
Signer Configuration
Signer Configuration File Options
The signer configuration file is a TOML file that contains the configuration options for your signer. Below are the options you can set in the signer configuration file.
node_host
✓
IP:PORT where your Stacks node can be accessed. The port 20443 is the default RPC endpoint for Stacks nodes. Note that you must use an IP address - DNS hosts are not supported at this time.
endpoint
✓
IP:PORT where the signer will expose an RPC endpoint for receiving events from your Stacks node.
stacks_private_key
✓
Hex representation of the signer's Stacks private key used for communicating with the Stacks Node, including writing to the Stacker DB instance.
network
✓
Network to use. One of "mainnet", "testnet" or "mocknet".
auth_password
✓
Authorization token for HTTP requests made from the signer to your Stacks node.
db_path
✓
Path to the signer's database file
block_proposal_timeout_ms
Specifies the maximum time (in milliseconds) a signer waits after a Bitcoin block for a miner to produce their first Nakamoto block. If the miner exceeds this time, the signer marks their tenure as invalid and rejects subsequent block proposals. Default value of 600_000 (10 minutes).
metrics_endpoint
IP:PORT for Prometheus metrics collection.
chain_id
An optional ChainID, only used for custom networks (like Nakamoto Testnet)
Example Configs
Below are sample configuration files for running a Stacks node and signer provided in one place for convenience. You'll need to modify some of these according to the How to Run a Signer doc.
Testnet Signer
# The IP address and port where your Stacks node can be accessed.
# The port 20443 is the default RPC endpoint for Stacks nodes.
# Note that you must use an IP address - DNS hosts are not supported at this time.
# This should be the IP address accessible via Docker, usually via a network.
node_host = "127.0.0.1:20443"
# This is the location where the signer will expose an RPC endpoint for
# receiving events from your Stacks node.
endpoint = "127.0.0.1:30000"
# Either “testnet” or “mainnet”
network = "testnet"
# this is a file path where your signer will persist data. If using Docker,
# this must be within a volume, so that data can be persisted across restarts
db_path = "/var/stacks/signer.sqlite"
# an authentication token that is used for some HTTP requests made from the
# signer to your Stacks node. You’ll need to use this later on when configuring
# your Stacks node. You create this field yourself, rather than it being generated
# with your private key.
auth_password = "$your_http_auth_token"
# This is the privateKey field from the keys you generated in the
# previous step.
stacks_private_key = "$your_stacks_private_key"Stacks Node Testnet Config
Note that the block_proposal_token field has changed to auth_token in the Stacks node configuration file.
This is the configuration you'll need to run a Stacks follower node if you are also running a signer. Be sure to change the commented lines to the appropriate data for your setup. If you are not familiar with the process of setting up a signer, be sure to follow the How to Run a Signer guide.
An overview of all Stacks node configuration options can be found in the Stacks Node Configuration doc.
Additions necessary specifically to run a signer are the [connection_options] and [[events_observer]] sections and the stacker = true line. There are also a few comments detailing other lines that need to change.
Mainnet Signer
This config is very similar to the testnet config, except the network field is changed.
Mainnet Stacks Node
With a mainnet Stacks node config, you'll need to change the bootstrap node field and the burnchain fields. Other than that, the ustx_balance fields are not necessary.
Was this helpful?
