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
integer
default:"8087"
TCP port for unencrypted CoT connectionsEnvironment variable:
FTS_COT_PORTYAML: Addresses.FTS_COT_PORTinteger
default:"1024"
Buffer size in bytes for receiving CoT data from clientsEnvironment variable:
FTS_DATA_RECEPTION_BUFFERYAML: System.FTS_DATA_RECEPTION_BUFFERinteger
default:"4"
Maximum 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
integer
default:"8089"
TCP port for SSL/TLS encrypted CoT connectionsEnvironment variable:
FTS_SSLCOT_PORTYAML: Addresses.FTS_SSLCOT_PORTstring
default:"/opt/fts/certs/server.key"
Path to server private key fileEnvironment variable:
FTS_SERVER_KEYDIRYAML: Certs.FTS_SERVER_KEYDIRstring
default:"/opt/fts/certs/server.pem"
Path to server certificate file (PEM format)Environment variable:
FTS_SERVER_PEMDIRYAML: Certs.FTS_SERVER_PEMDIRstring
default:"/opt/fts/certs/ca.pem"
Path to Certificate Authority (CA) certificateEnvironment variable:
FTS_CADIRYAML: Certs.FTS_CADIRstring
default:"/opt/fts/certs/ca.key"
Path to Certificate Authority private keyEnvironment variable:
FTS_CAKEYDIRYAML: Certs.FTS_CAKEYDIRstring
default:"supersecret"
Password for client certificate generationEnvironment variable:
FTS_CLIENT_CERT_PASSWORDYAML: Certs.FTS_CLIENT_CERT_PASSWORDstring
default:"/opt/fts/certs/server.key.unencrypted"
Path to unencrypted server key (used internally)Environment variable:
FTS_UNENCRYPTED_KEYDIRYAML: Certs.FTS_UNENCRYPTED_KEYDIRstring
default:"/opt/fts/certs/server.p12"
Path 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
integer
default:"19023"
Port for the REST API serviceEnvironment variable:
FTS_API_PORTYAML: Addresses.FTS_API_PORTstring
default:"0.0.0.0"
IP address for the REST API service to bind toEnvironment variable:
FTS_API_ADDRESSYAML: Addresses.FTS_API_ADDRESSboolean
default:"true"
Enable 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
integer
default:"8080"
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
integer
default:"8443"
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
string
default:"auto-detected"
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_ADDRESSstring
default:"/opt/fts/FreeTAKServerDataPackageFolder"
Directory 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
integer
default:"9000"
Port for federation service connectionsEnvironment variable:
FTS_FED_PORTYAML: Addresses.FTS_FED_PORTstring
default:"/opt/fts/certs/server.pem"
Certificate for federation connectionsEnvironment variable:
FTS_FEDERATION_CERTDIRYAML: Certs.FTS_FEDERATION_CERTDIRstring
default:"/opt/fts/certs/server.key"
Private key for federation connectionsEnvironment variable:
FTS_FEDERATION_KEYDIRYAML: Certs.FTS_FEDERATION_KEYDIRstring
default:"defaultpass"
Password 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