Configuration
This document describes the configuration options for the Andruav Authenticator server.
Configuration File
The server is configured via server.config (JSON format). You can create environment-specific configs by copying and renaming (e.g., server.config.local, server.config.production).
Server Settings
Basic Server Configuration
{
"server_id": "AndruavAuth",
"server_ip": "0.0.0.0",
"server_port": 19408,
"health_utl": "/h"
}
| Parameter | Type | Default | Description |
|———–|——|———|————-|
| server_id | string | “AndruavAuth” | Unique server identifier for S2S authentication |
| server_ip | string | “0.0.0.0” | IP address to bind to (0.0.0.0 = all interfaces) |
| server_port | number | 19408 | HTTP/HTTPS port for the server |
| health_utl | string | “/h” | Health check endpoint path |
Account Storage
Storage Mode
{
"account_storage_type": "file"
}
| Value | Description |
|——-|————-|
| single | Single hardcoded account (testing only) |
| file | JSON file storage (LowDB) |
| db | MySQL database storage |
Single Account Mode
{
"account_storage_type": "single",
"single_account_user_name": "single@airgap.droneengage.com",
"single_account_access_code": "test"
}
File-Based Storage
{
"account_storage_type": "file",
"db_users": "./db_users.db"
}
| Parameter | Type | Default | Description |
|———–|——|———|————-|
| db_users | string | “./db_users.db” | Path to JSON database file |
MySQL Database Storage
{
"account_storage_type": "db",
"dbIP": "localhost",
"dbuser": "USERNAME",
"dbpassword": "PASSWORD",
"dbdatabase": "andruav"
}
| Parameter | Type | Description |
|———–|——|————-|
| dbIP | string | MySQL server IP address |
| dbuser | string | MySQL username |
| dbpassword | string | MySQL password |
| dbdatabase | string | MySQL database name |
Server-to-Server (S2S) Configuration
S2S WebSocket Listener
{
"s2s_ws_listening_ip": "127.0.0.1",
"s2s_ws_listening_port": 19001
}
| Parameter | Type | Default | Description |
|———–|——|———|————-|
| s2s_ws_listening_ip | string | “127.0.0.1” | IP address for S2S WebSocket connections |
| s2s_ws_listening_port | number | 19001 | Port for S2S WebSocket connections |
S2S Authentication
{
"s2s_auth_enabled": true,
"s2s_trusted_server_keys": {
"AndruavLap": "./ssl/AndruavLap_public.pem",
"SuperServer": "./ssl/SuperServer_public.pem",
"DronCommServer": "./ssl/DronCommServer_public.pem"
}
}
| Parameter | Type | Default | Description |
|———–|——|———|————-|
| s2s_auth_enabled | boolean | false | Enable S2S Ed25519 authentication |
| s2s_trusted_server_keys | object | {} | Mapping of server_id to public key file paths |
Note: The authenticator only accepts connections, so it only needs public keys. See S2S Authentication for complete setup guide.
SSL/TLS Configuration
{
"enable_SSL": true,
"ssl_key_file": "ssl/domain.key",
"ssl_cert_file": "ssl/domain.crt"
}
| Parameter | Type | Default | Description |
|———–|——|———|————-|
| enable_SSL | boolean | true | Enable HTTPS |
| ssl_key_file | string | “ssl/domain.key” | Path to SSL private key file |
| ssl_cert_file | string | “ssl/domain.crt” | Path to SSL certificate file |
Admin Interface Configuration
{
"admin_username": "admin",
"admin_password": "admin123",
"session_secret": "change-this-secret-in-production",
"webadmin_port": 8089
}
| Parameter | Type | Default | Description |
|———–|——|———|————-|
| admin_username | string | “admin” | Admin username for web interface |
| admin_password | string | “admin123” | Admin password for web interface |
| session_secret | string | required | Secret for session encryption (change in production) |
| webadmin_port | number | 8089 | Port for admin web interface |
Security Note: Always change admin_username, admin_password, and session_secret in production.
Logging Configuration
{
"enableLog": false,
"log_directory": "./logs/",
"log_timeZone": "GMT",
"log_detailed": true
}
| Parameter | Type | Default | Description |
|———–|——|———|————-|
| enableLog | boolean | false | Enable logging |
| log_directory | string | “./logs/” | Directory for log files |
| log_timeZone | string | “GMT” | Timezone for log timestamps |
| log_detailed | boolean | true | Enable detailed logging |
Application Configuration
{
"skip_hardware_validation": true,
"andruavSecurityEx": "Andruav Web Panel, Andruav Geo Fence Manager, DRONE ENGAGE Web Client, Andruav Mobile, uavos",
"APPVERSION": "{\"andruav\": \"4.00.00\", \"uavos\": \"1.0.0\", \"de\": \"1.0.0\"}"
}
| Parameter | Type | Default | Description |
|———–|——|———|————-|
| skip_hardware_validation | boolean | true | Skip hardware ID validation |
| andruavSecurityEx | string | - | Allowed client applications |
| APPVERSION | string | - | JSON string with version info for each app |
Example Configuration Files
Development (server.config)
{
"server_id": "AndruavAuth",
"server_ip": "0.0.0.0",
"server_port": 19408,
"health_utl": "/h",
"account_storage_type": "file",
"db_users": "./db_users.db",
"enableLog": true,
"log_directory": "./logs/",
"log_timeZone": "GMT",
"log_detailed": true,
"ignoreEmail": true,
"s2s_ws_listening_ip": "127.0.0.1",
"s2s_ws_listening_port": 19001,
"s2s_auth_enabled": false,
"enable_SSL": false,
"admin_username": "admin",
"admin_password": "admin123",
"session_secret": "dev-secret",
"webadmin_port": 8089,
"skip_hardware_validation": true
}
Production (server.config.production)
{
"server_id": "AndruavAuth",
"server_ip": "0.0.0.0",
"server_port": 19408,
"health_utl": "/h",
"account_storage_type": "db",
"dbIP": "localhost",
"dbuser": "andruav_user",
"dbpassword": "secure_password",
"dbdatabase": "andruav",
"enableLog": true,
"log_directory": "/var/log/andruav_auth/",
"log_timeZone": "UTC",
"log_detailed": false,
"ignoreEmail": false,
"s2s_ws_listening_ip": "0.0.0.0",
"s2s_ws_listening_port": 19001,
"s2s_auth_enabled": true,
"s2s_trusted_server_keys": {
"Server1": "./ssl/Server1_public.pem",
"Server2": "./ssl/Server2_public.pem"
},
"enable_SSL": true,
"ssl_key_file": "/etc/ssl/private/domain.key",
"ssl_cert_file": "/etc/ssl/certs/domain.crt",
"admin_username": "admin",
"admin_password": "secure_password",
"session_secret": "random_long_secret_string",
"webadmin_port": 8089,
"skip_hardware_validation": false
}
Environment Variables
You can override configuration values using environment variables. Prefix with ANDRUAV_ and use underscores:
export ANDRUAV_SERVER_PORT=19408
export ANDRUAV_DBIP=localhost
export ANDRUAV_DBUSER=andruav_user
export ANDRUAV_DBPASSWORD=secure_password
Security Best Practices
Change Default Credentials
Always change
admin_usernameandadmin_passwordUse strong, unique passwords
Session Secret
Use a long, random string for
session_secretDifferent for each deployment
SSL/TLS
Always enable
enable_SSLin productionUse valid certificates from a trusted CA
Restrict file permissions on key files (0600)
Database
Use strong database passwords
Restrict database user permissions
Use SSL for database connections
S2S Authentication
Enable
s2s_auth_enabledin productionKeep private keys secure (0600 permissions)
Rotate keys periodically
Logging
Disable detailed logging in production
Use centralized log management
Protect log files from unauthorized access
Troubleshooting
Server Won’t Start
Check JSON syntax is valid
Verify file paths exist
Check port is not in use
Review logs for error messages
Database Connection Failed
Verify MySQL is running
Check database credentials
Ensure database exists
Test network connectivity
S2S Authentication Fails
Verify public keys are in
ssl/directoryCheck
s2s_trusted_server_keysconfigurationEnsure server IDs match key filenames
Verify key file permissions (0600)
Admin Interface Not Accessible
Check
webadmin_portis not blocked by firewallVerify admin credentials
Check session secret is set
Review browser console for errors