> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify.com/FreeTAKTeam/FreeTakServer/llms.txt
> Use this file to discover all available pages before exploring further.

# Connecting ATAK, WinTAK, and ITAK Clients

> Step-by-step guide for connecting TAK clients to FreeTAKServer

This guide walks you through connecting ATAK (Android), WinTAK (Windows), and ITAK (iOS) clients to your FreeTAKServer instance.

## Prerequisites

Before connecting clients, ensure:

* FreeTAKServer is running and accessible
* You know your server's IP address or hostname
* You have generated client certificates (if using SSL)
* Firewall allows connections on required ports

## Understanding Connection Types

FreeTAKServer supports two connection types:

### Non-SSL Connection

* **Port**: 8087 (default CoT port)
* **Use case**: Testing, internal networks
* **Security**: Unencrypted traffic

### SSL Connection (Recommended)

* **Port**: 8089 (default SSL CoT port)
* **Use case**: Production deployments
* **Security**: Encrypted traffic with certificate validation
* **Requirements**: Server and client certificates

## Method 1: Using Data Package (Recommended)

The easiest way to connect clients is using a configuration data package generated by FTS.

<Steps>
  ### Generate Client Certificate

  FreeTAKServer includes a certificate generation tool. Connect to your server and run:

  ```bash theme={null}
  python3 -m FreeTAKServer.core.util.certificate_generation
  ```

  Or use the integrated certificate manager:

  <CodeGroup>
    ```python Python Script theme={null}
    from FreeTAKServer.core.util.certificate_generation import AtakOfTheCerts

    # Generate certificates for a new client
    with AtakOfTheCerts(pwd="your_cert_password") as cert_gen:
        cert_gen.generate_ca()  # Only needed first time
        cert_gen.bake("username", "user")  # Replace 'username' with actual username
    ```

    ```bash CLI theme={null}
    # Using the built-in certificate tool
    python3 -c "from FreeTAKServer.core.util.certificate_generation import AtakOfTheCerts; \
    with AtakOfTheCerts('password') as c: c.generate_ca(); c.bake('Client', 'user')"
    ```
  </CodeGroup>

  Certificates are stored in `/opt/fts/certs/` by default.

  ### Generate Data Package

  Create a connection data package for your client:

  <CodeGroup>
    ```python ATAK/ITAK Package theme={null}
    from FreeTAKServer.core.util.certificate_generation import generate_standard_zip

    generate_standard_zip(
        server_address="your.server.ip",
        user_filename="Client.p12",
        cert_password="password",
        ssl_port="8089"
    )
    ```

    ```python WinTAK Package theme={null}
    from FreeTAKServer.core.util.certificate_generation import generate_wintak_zip

    generate_wintak_zip(
        server_address="your.server.ip",
        user_filename="Client.p12",
        cert_password="password",
        ssl_port="8089"
    )
    ```
  </CodeGroup>

  The data package (`.zip` file) will be created in `/opt/fts/certs/clientPackages/`.

  ### Import on ATAK

  1. Transfer the `.zip` file to your Android device
  2. Open ATAK
  3. Tap the **Import Manager** (three dots menu → Import Manager)
  4. Navigate to the `.zip` file and select it
  5. ATAK will import the certificates and connection settings
  6. Go to **Settings → Network Preferences → Network Connections**
  7. Enable the FreeTAKServer connection
  8. Verify connection status shows "Connected"

  ### Import on WinTAK

  1. Copy the `.zip` file to your Windows machine
  2. Open WinTAK
  3. Click **Import** from the menu
  4. Select the `.zip` data package
  5. WinTAK will extract certificates to the appropriate location
  6. Go to **Settings → Network Connections**
  7. Enable the FreeTAKServer connection
  8. Check the status bar for "Connected"

  ### Import on ITAK

  1. Transfer the `.zip` file to your iOS device (via AirDrop, email, etc.)
  2. Open the file in ITAK (Share → Open in ITAK)
  3. ITAK will import the configuration automatically
  4. Go to **Settings → Network**
  5. Enable the FreeTAKServer connection
  6. Verify connection in status bar
</Steps>

## Method 2: Manual Configuration

If you prefer to configure manually or can't use data packages:

<Steps>
  ### Configure ATAK Manually

  1. Open ATAK
  2. Go to **Settings → Network Preferences → Network Connections**
  3. Tap the **+** button to add a new connection
  4. Enter connection details:

  <CodeGroup>
    ```text Non-SSL theme={null}
    Description: FreeTAKServer
    Address: your.server.ip
    Port: 8087
    Protocol: TCP
    ```

    ```text SSL theme={null}
    Description: FreeTAKServer SSL
    Address: your.server.ip
    Port: 8089
    Protocol: SSL
    Use Authentication: Yes
    Certificate: (select imported .p12 file)
    Certificate Password: your_password
    ```
  </CodeGroup>

  5. Tap **Save**
  6. Enable the connection

  ### Configure WinTAK Manually

  1. Open WinTAK
  2. Go to **Settings → Network Connections**
  3. Click **Add**
  4. Configure:

  ```text theme={null}
  Description: FreeTAKServer
  Enabled: Checked
  Address: your.server.ip:8089:ssl
  Preferred: Checked

  SSL Settings:
  Use SSL: Yes
  Client Certificate: Browse to .p12 file
  Password: your_password
  Server Certificate: Browse to server .p12 file
  Password: your_password
  ```

  5. Click **OK** and **Apply**
</Steps>

## Connection Verification

### Check Server Logs

Monitor FreeTAKServer logs for connection events:

```bash theme={null}
tail -f /opt/fts/Logs/FTS.log | grep -i "connection"
```

You should see entries like:

```text theme={null}
Handling connection data
client update has been sent through queue
```

### Verify in ATAK

* Check the **Network Status** widget
* Look for green indicator next to your connection
* Your callsign should appear on other connected clients' maps

### Test Communication

1. Send a chat message to "All Chat Rooms"
2. Drop a marker on the map
3. Other connected clients should receive both

## Troubleshooting

### Connection Refused

<Warning>
  Ensure the CoT ports are open in your firewall:

  ```bash theme={null}
  # For firewalld
  sudo firewall-cmd --permanent --add-port=8087/tcp
  sudo firewall-cmd --permanent --add-port=8089/tcp
  sudo firewall-cmd --reload

  # For ufw
  sudo ufw allow 8087/tcp
  sudo ufw allow 8089/tcp
  ```
</Warning>

### Certificate Errors

<Note>
  **Common SSL issues:**

  * **Certificate expired**: Regenerate certificates with longer expiry
  * **Wrong password**: Verify certificate password matches configuration
  * **Missing CA**: Ensure server certificate package includes CA certificate

  ```python theme={null}
  # Generate certificates with 2-year expiry
  with AtakOfTheCerts() as cert:
      cert.bake("username", "user", expiry_time_secs=63072000)
  ```
</Note>

### Client Not Visible

If clients connect but don't see each other:

1. Verify client sent presence CoT (check server logs)
2. Ensure clients are on same channel/network
3. Check server routing configuration
4. Verify no IP filtering is active

### iOS ITAK Specific Issues

* ITAK may require certificates in specific format
* Ensure background location permissions are enabled
* Check iOS VPN settings don't interfere

## Configuration Reference

### Server Ports

| Service          | Default Port | Environment Variable     | Description                |
| ---------------- | ------------ | ------------------------ | -------------------------- |
| CoT Service      | 8087         | `FTS_COT_PORT`           | Non-SSL CoT traffic        |
| SSL CoT Service  | 8089         | `FTS_SSLCOT_PORT`        | SSL-encrypted CoT traffic  |
| Data Package     | 8080         | `FTS_DP_ADDRESS`         | HTTP data package service  |
| SSL Data Package | 8443         | `FTS_HTTPS_TAK_API_PORT` | HTTPS data package service |
| API              | 19023        | `FTS_API_PORT`           | REST API                   |

### Client Certificate Paths

FreeTAKServer stores certificates in:

```bash theme={null}
/opt/fts/certs/
├── ca.pem              # Certificate Authority
├── ca.key              # CA private key
├── server.pem          # Server certificate
├── server.key          # Server private key
├── server.p12          # Server PKCS12 bundle
├── Client.p12          # Default client certificate
└── clientPackages/     # Generated data packages
    └── username.zip
```

## Public Server Connection

To connect to the FreeTAKTeam public server for testing:

**Server Details:**

* **Address**: `137.184.101.250`
* **Port**: `8087`
* **Protocol**: TCP (non-SSL)

**Configuration Package:**

Download the pre-configured data package from:
[https://drive.google.com/file/d/1IK1LfPN13EWikHaMyOuDDwIerNGz-Wli/view](https://drive.google.com/file/d/1IK1LfPN13EWikHaMyOuDDwIerNGz-Wli/view)

Import using ATAK's Import Manager.

<Note>
  The public server is for testing only. Do not use for sensitive operations.
</Note>

## Next Steps

* [Configure SSL/TLS](/guides/ssl-configuration) for secure production use
* [Set up Data Packages](/guides/data-packages) for sharing maps and files
* [Configure Federation](/guides/federation) to connect multiple FTS instances
