tsserver.yaml). The YAML format provides a structured and readable way to configure all server settings in one place.
Overview
Thetsserver.yaml file allows you to configure all server settings in a structured format. This approach offers several advantages:
- Organization: Group related settings together logically
- Version Control: Easy to track changes in git
- Documentation: Comments can be added to explain settings
- Simplicity: No need for long command-line arguments
Command-line flags take precedence over YAML configuration, which takes precedence over environment variables.
Using the Configuration File
To use a YAML configuration file:Complete Schema Example
Below is the complete YAML schema with all available options:Schema Reference
Root Level
All configuration is nested under theserver key:
General Configuration
General Settings
General Settings
Directory path where the server will look for the
licensekey.dat file.Confirms you have read and accepted the server license agreement.Accepted values:
accept, 1, trueA string to distinguish this instance from other instances using the same database.
If set to 1, no default server is created even if no server exists in the database.
If set to 1, do not apply permission changes during server updates.
⚠️ WARNING: If set to 1, resets the database completely (deletes all servers, clients, etc.).
Voice Server
Voice Configuration
Voice Configuration
Permanently sets the default UDP voice port for the first virtual server created.Range: 1 - 65535
IP addresses for the server to bind the voice port to. Supports multiple entries.
Number of threads to use for voice processing.Range: 1 - 16
Logging
Log Settings
Log Settings
File Transfer
File Transfer Configuration
File Transfer Configuration
Network
Network Settings
Network Settings
Proxy server used for external connections.
Crash Handling
Crash Dump Settings
Crash Dump Settings
Path where crash dumps should be written.
Database Configuration
All database settings are nested underserver.database:
Database Settings
Database Settings
Specifies the database plugin to use.Accepted values:
sqlite3, mariadbPath to folder containing SQL queries used by the server.
Subdirectory in SQL path to use for DB creation scripts.
Number of days to keep clients in the database.
Database Connection
Connection settings are nested underserver.database.config:
Database Connection Settings
Database Connection Settings
SQLite only: if set to 1, skip DB integrity check at startup.
Database hostname or IP address.
Database port.Range: 1 - 65535
Socket file to use for database connection.
Timeout in seconds when connecting to the database.Range: 1 - 432000
Name of the database to use.
The username to use for database authentication.
The password to use for database authentication.
Number of connections to establish to the database.Range: 2 - 100
If set to 1, enable logging of SQL queries.
Query Interface
All query settings are nested underserver.query:
General Query Settings
General Query Settings
How many threads to use for query command processing.Range: 2 - 32
Interval in seconds after which to log query statistics.Range: 10 - 31556952
File path listing IPs exempt from query flood protection.
File path listing IPs blocked from the query interface.
Override the query password for the built-in serveradmin account.
If set to 1, log every command received on the query interface.
If set to 1, skip brute force checking on query interface connections.
How much memory (in MB) to allocate for query connection buffering.Range: 20 - 100
Path to the query documentation files.
Timeout in seconds before query connections expire.
SSH Query
SSH query settings are nested underserver.query.ssh:
SSH Query Settings
SSH Query Settings
If set to 1, enable the SSH query interface.
Port on which to listen for SSH query connections.Range: 1 - 65535
Addresses to listen on for SSH query connections.
Path to the SSH RSA host key file.
HTTP Query
HTTP query settings are nested underserver.query.http:
HTTP Query Settings
HTTP Query Settings
HTTPS Query
HTTPS query settings are nested underserver.query.https:
HTTPS Query Settings
HTTPS Query Settings
If set to 1, enable the HTTPS query interface.
Port on which to listen for secure Web Query connections.Range: 1 - 65535
Addresses to listen on for secure Web Query connections.
Path to certificate file for HTTPS Web Query.
Path to private key file used with the certificate.
Configuration Examples
SQLite (Default)
SQLite Configuration
SQLite Configuration
MariaDB/MySQL
MariaDB Configuration
MariaDB Configuration
Production Deployment
Production Configuration
Production Configuration
Best Practices
Security
Security
- Use environment variables for sensitive data like passwords
- Enable HTTPS for query interfaces in production
- Set up IP allow/block lists for query interfaces
- Use strong admin passwords
- Keep the license file secure with proper file permissions
- Disable HTTP query in production (use HTTPS instead)
Performance
Performance
- Adjust
threads-voice-udpbased on your CPU cores (typically 1 per 2 cores) - Increase
database.config.connectionsfor high-traffic servers - Use MariaDB instead of SQLite for production
- Adjust
query.pool-sizebased on expected query load - Monitor and adjust
query.buffer-mbif needed
Maintenance
Maintenance
- Set appropriate
database.client-keep-daysbased on your retention policy - Configure
log-pathto a location with adequate disk space - Regular backups of the database and configuration files
- Use
machine-idto identify instances in multi-server setups - Keep crashdump-path on a partition with sufficient space
High Availability
High Availability
- Use external database (MariaDB) for clustering
- Set unique
machine-idfor each instance - Share database across instances
- Use load balancers for query interfaces
- Implement database replication for redundancy
Validation
To validate your configuration file without starting the server:See Also
CLI Options
Complete list of command-line options
Environment Variables
Complete list of environment variables