Overview
FreeTAKServer provides multiple network services for TAK clients and applications:- TCP CoT Service: Unencrypted Cursor on Target message service
- SSL CoT Service: TLS-encrypted Cursor on Target message service
- REST API Service: RESTful HTTP API for programmatic access
- HTTP TAK API Service: HTTP endpoint for TAK protocol operations
- HTTPS TAK API Service: Secure HTTPS endpoint for TAK protocol operations
TCP CoT Service
The TCP CoT service handles unencrypted TAK Cursor on Target (CoT) messages over TCP.Configuration
TCP port for unencrypted CoT connectionsEnvironment variable:
FTS_COT_PORTYAML: Addresses.FTS_COT_PORTBuffer size in bytes for receiving CoT data from clientsEnvironment variable:
FTS_DATA_RECEPTION_BUFFERYAML: System.FTS_DATA_RECEPTION_BUFFERMaximum time in seconds to wait for data reception before timeoutEnvironment variable:
FTS_MAX_RECEPTION_TIMEYAML: System.FTS_MAX_RECEPTION_TIMEService Constants
Defined inFreeTAKServer/services/tcp_cot_service/configuration/tcp_cot_service_constants.py:
Message Types
SEND_TO_ALL (0): Broadcast message to all connected clientsSEND_TO_SOME (1): Send message to specific clients
Example Configuration
YAML:Client Connection
TAK clients connect to the TCP CoT service using:- Protocol: TCP
- Host: Server IP address
- Port:
CoTServicePort(default 8087) - Encryption: None
SSL CoT Service
The SSL CoT service handles TLS-encrypted TAK Cursor on Target messages.Configuration
TCP port for SSL/TLS encrypted CoT connectionsEnvironment variable:
FTS_SSLCOT_PORTYAML: Addresses.FTS_SSLCOT_PORTPath to server private key fileEnvironment variable:
FTS_SERVER_KEYDIRYAML: Certs.FTS_SERVER_KEYDIRPath to server certificate file (PEM format)Environment variable:
FTS_SERVER_PEMDIRYAML: Certs.FTS_SERVER_PEMDIRPath to Certificate Authority (CA) certificateEnvironment variable:
FTS_CADIRYAML: Certs.FTS_CADIRPath to Certificate Authority private keyEnvironment variable:
FTS_CAKEYDIRYAML: Certs.FTS_CAKEYDIRPassword for client certificate generationEnvironment variable:
FTS_CLIENT_CERT_PASSWORDYAML: Certs.FTS_CLIENT_CERT_PASSWORDPath to unencrypted server key (used internally)Environment variable:
FTS_UNENCRYPTED_KEYDIRYAML: Certs.FTS_UNENCRYPTED_KEYDIRPath to PKCS#12 format certificate bundleEnvironment variable:
FTS_SERVER_P12DIRYAML: Certs.FTS_SERVER_P12DIRService Constants
Defined inFreeTAKServer/services/ssl_cot_service/configuration/ssl_cot_service_constants.py:
SSL/TLS Settings
FromFreeTAKServer/core/configuration/ReceiveConnectionsConstants.py:
- WRAP_SSL_TIMEOUT:
1.0seconds - SSL_SOCK_TIMEOUT:
60seconds
Example Configuration
YAML:Client Connection
TAK clients connect to the SSL CoT service using:- Protocol: TCP with TLS
- Host: Server IP address
- Port:
SSLCoTServicePort(default 8089) - Encryption: TLS with client certificate authentication
- Client Certificate: Required (generated by FTS or TAK Server)
REST API Service
The REST API provides programmatic HTTP access to FreeTAKServer functionality.Configuration
Port for the REST API serviceEnvironment variable:
FTS_API_PORTYAML: Addresses.FTS_API_PORTIP address for the REST API service to bind toEnvironment variable:
FTS_API_ADDRESSYAML: Addresses.FTS_API_ADDRESSEnable API optimizations for better performanceEnvironment variable:
FTS_OPTIMIZE_APIYAML: System.FTS_OPTIMIZE_APIAuthentication
The REST API uses Bearer token authentication with HTTPTokenAuth. FromFreeTAKServer/services/rest_api_service/controllers/authentication.py:
APIUsertable for API usersSystemUsertable for system users
- User ID
- Timestamp
- Request content
- Endpoint URL
API Endpoints
The REST API provides blueprints for:- Data Packages: Upload and manage data packages
- Emergencies: Create and manage emergency notifications
- ExCheck: Checklist management
- GeoObjects: Create and manage geographic objects
- Missions: Mission planning and coordination
- User Management: User administration
Example Configuration
YAML:API Usage
Default Values
FromFreeTAKServer/core/configuration/RestAPIVariables.py:
HTTP TAK API Service
HTTP endpoint for TAK protocol operations (unencrypted).Configuration
HTTP port for TAK API serviceEnvironment variable:
FTS_HTTP_TAK_API_PORTEndpoints
The HTTP TAK API service provides:- Enterprise Sync: Data synchronization for TAK clients
- Missions: Mission management
- ExCheck: Checklist operations
- CITRAP: Critical Infrastructure TAK Reporting and Analysis Platform
- Misc: Various utility endpoints
Example Configuration
Environment Variables:HTTPS TAK API Service
Secure HTTPS endpoint for TAK protocol operations.Configuration
HTTPS port for secure TAK API serviceEnvironment variable:
FTS_HTTPS_TAK_API_PORTExample Configuration
YAML:Data Package Service
Configuration for the data package distribution service.Configuration
IP address used for data package URLs. Must be set correctly for private data packages to work.Environment variable:
FTS_DP_ADDRESSYAML: Addresses.FTS_DP_ADDRESSDirectory for storing uploaded data packagesEnvironment variable:
FTS_DATAPACKAGE_PATHYAML: Filesystem.FTS_DATAPACKAGE_PATHConstants
FromFreeTAKServer/core/configuration/DataPackageServerConstants.py:
Example Configuration
YAML:Federation Service
Configuration for federating with other TAK servers.Configuration
Port for federation service connectionsEnvironment variable:
FTS_FED_PORTYAML: Addresses.FTS_FED_PORTCertificate for federation connectionsEnvironment variable:
FTS_FEDERATION_CERTDIRYAML: Certs.FTS_FEDERATION_CERTDIRPrivate key for federation connectionsEnvironment variable:
FTS_FEDERATION_KEYDIRYAML: Certs.FTS_FEDERATION_KEYDIRPassword for the federation keyEnvironment variable:
FTS_FEDERATION_KEYPASSYAML: Certs.FTS_FEDERATION_KEYPASSExample Configuration
YAML:Service Management
Starting Services
Services are typically started together when launching FreeTAKServer:Service Status
Default service status values fromRestAPIVariables.py:
REST API Control
Services can be controlled via the REST API:Complete Service Configuration Example
Best Practices
- Use SSL/TLS services for production environments
- Keep certificate files secure with appropriate filesystem permissions
- Regularly rotate certificates and passwords
- Monitor service logs for connection issues
- Use different ports for each service to avoid conflicts
- Configure firewalls to allow only necessary service ports
- Set appropriate buffer sizes based on your network conditions
- Use the REST API for automated monitoring and management