Skip to main content
NATS Server can be configured using configuration files, command-line flags, or a combination of both. Configuration files use a simple, JSON-like format that’s easy to read and maintain.

Configuration File Format

NATS Server configuration files use a simple syntax similar to JSON:
nats-server.conf
Key features:
  • Comments start with #
  • Key-value pairs: key: value
  • Nested blocks use curly braces: { }
  • Arrays use square brackets: [ ]
  • Strings can be quoted or unquoted (quotes required for special characters)
  • Numbers and booleans are unquoted

Configuration File Location

Default Locations

NATS Server looks for configuration files in:
  1. Path specified with -c or --config flag
  2. Current directory: ./nats-server.conf
  3. User config: ~/.nats/nats-server.conf
  4. System config: /etc/nats/nats-server.conf

Specifying Configuration

Basic Configuration

Cluster Configuration

Configure NATS for clustering:
cluster.conf

Authentication Configuration

Basic Authentication

Multiple Users

Token Authentication

Permissions

TLS Configuration

JetStream Configuration

Common Configuration Patterns

Development Environment

dev.conf

Production Environment

prod.conf

High Availability Setup

ha.conf

Environment Variables

Use environment variables in configuration:
Set environment variables before starting:

Configuration Validation

Validate configuration without starting the server:
The -t flag performs a dry-run check:
  • Parses the configuration file
  • Validates all settings
  • Reports any errors
  • Exits without starting the server
Example output:

Configuration Reload

Reload configuration without restarting:
Reloadable settings:
  • Logging levels (debug, trace)
  • Log file rotation
  • Authentication changes
  • TLS certificates
  • Cluster routes
Some settings like ports and JetStream configuration require a restart.

Configuration vs Command-Line Flags

Command-Line Flags

Common flags:

Precedence

Configuration precedence (highest to lowest):
  1. Command-line flags
  2. Configuration file
  3. Default values
Example:

Configuration Files from Source

The NATS Server repository includes example configurations:

Best Practices

Use Configuration Files

Prefer configuration files over command-line flags for maintainability and version control.

Validate Before Deploy

Always test configuration with -t flag before deploying to production.

Environment Variables for Secrets

Use environment variables for sensitive data like passwords and tokens.

Version Control

Keep configuration files in version control (exclude secrets).

Troubleshooting

Configuration Parse Errors

Common Issues

Syntax Error:
Solution: Check for missing commas, quotes, or braces. Port Already in Use:
Solution: Change port or stop conflicting service. Permission Denied:
Solution: Check file permissions and directory ownership.

Debug Configuration

Enable debug output:
This prints:
  • Configuration values
  • Startup sequence
  • Connection attempts
  • Protocol details

Next Steps

Docker Deployment

Deploy NATS with Docker containers

Kubernetes Deployment

Deploy NATS on Kubernetes