Skip to content

Install

The official Docker image for FreeTAKServer.

Usage

When using this docker container we suggest that you use the --restart unless-stopped flag as shown in the examples. This will ensure that the service automatically starts with the host and will restart if it encounters an error and crashes. The port mappings in the examples are required to make the service accessible to hosts. All environment variables are optional. All data is stored in a single directory for ease of persistent data between container versions.

Container Quick-Start

Please use this guide if you have never used containers before. If you are familiar with container infrastructure then you may wish to simply view the sample compose file that we provide.

Runtimes

A runtime is what runs the container or containers you install.

There are two main runtimes: Podman and Docker.

Docker is the original runtime and is widely supported but has some issues with security, such as running containers by default in a root-ful way.

Podman is a newer runtime that is shipped by default on RHEL/Fedora/CentOS systems. Containers in this runtime are by default run root-less, preventing many security issues.

Our containers are made and tested to be compatible with Podman, which is the more restrictive runtime. As a result these containers should function on either choice. The most important part is to choose a runtime and use the correct invocations for it.

If you are on RHEL/Fedora/CentOS and similar family of systems, then you can likely invoke podman without additional installation.

If your system does not already have a runtime, install it with your package manager.

Check which one you have installed by running

podman --version
docker --version
If you have both, CHOOSE ONE and STICK WITH IT for the duration of the guide.

Host expectations

The host is the computer/server/VM inside of which your runtime actually runs.

FreeTAKServer is, as the name suggests, server software, and should be treated as such. Installation onto a normal desktop environment requires additional effort and configuration that is typically useful only for development purposes.

The use of Linux is highly encouraged. This is the industry standard host OS for containers.

WE WILL NOT SUPPORT RUNNING CONTAINERS ON DOCKER DESKTOP ON YOUR WINDOWS PC.

Your Windows computer is not a good choice for hosting a server of any kind.

Container Repository

A container repository is a location where you can obtain pre-built containers.

Some examples are docker.io and ghcr.io.

Please find all of our container images on the GitHub Container Repository.

You can obtain the latest images of the server and web UI by running the following commands:

podman pull ghcr.io/freetakteam/freetakserver:latest
podman pull ghcr.io/freetakteam/ui:latest

OR

docker pull ghcr.io/freetakteam/freetakserver:latest
docker pull ghcr.io/freetakteam/ui:latest

Please note that we use GHCR instead of the more common dockerhub.

Setup

Installation Directory

Create a new directory in your home folder for this guide.

mkdir container
cd container

Compose

A compose file is a way to automate the operation of one or many containers. In this case we have a sample compose file file with just the server and UI.

Download this file to your working directory.

wget https://raw.githubusercontent.com/FreeTAKTeam/FreeTAKHub-Installation/refs/heads/main/containers/example-compose.yaml -o compose.yaml

Open this file in the text editor of your choice

nano compose.yaml

and update some select configuration items with the indicated item

FTS_IP: YOUR EXTERNAL URL HERE
Your external URL is your HOST COMPUTER'S EXTERNAL IP ADDRESS unless you have a very advanced configuration.

If you are running this behind your personal all-in-one cable modem/router/accesspoint combo then you probably need to do some port forwarding, however this is out of scope for this guide.

Once the configuration in your compose.yaml is to your liking, you can then simply run your compose file.

podman-compose -f compose.yaml up -d

OR

docker compose -f compose.yaml up -d

You can check how your containers are doing by running

podman logs freetakserver
podman logs freetakserver-ui

OR

docker logs freetakserver
docker logs freetakserver-ui

When done, you can stop everything by running

podman-compose -f compose.yaml down

OR

docker compose -f compose.yaml down

Persistent Data

All persistent data is stored in the volumes that are explicitly created in the sample compose file.

You can access it in your runtime volume store if needed, however you should probably NOT do this while the server is running.

Ports

The docker image runs the ports on the same defaults as FreeTAKServer. You can use the -e flag to map these ports to different ports or to run multiple FreeTAKServer's concurrently on the same host.

Environment Variables

All environment variables will apply to FTS. However, these are some additional ones specific to this docker image.

Variable Name Definition
FTS_CONNECTION_MESSAGE The text of the message sent upon connection
FTS_COT_TO_DB A boolean indicating ?
APPPORT Allows hosting FTS UI from a different port
APIIP Allows the FTS UI to specify a different API port. Defaults the IP environment variable
APIPORT Allows the FTS UI to specify a different API port
APIPROTOCOL Allows the FTS UI to specify a different API protocol
WEBMAPIP Allows the FTS UI to specify a different webmap IP
WEBMAPPORT Allows the FTS UI to specify a different webmap port
WEBMAPPROTOCOL Allows the FTS UI to specify a different webmap protocol

Storage

All data in this container is stored in /data. This directory will need to be stored to a volume if you wish to persist data between updates.

If you use a storage volume you may need to inspect the docker volume to find where it saved the data.

docker inspect fts_data
````
It will return something similar to this:
```json
[
    {
        "CreatedAt": "2020-11-12T03:32:53Z",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/fts_data/_data",
        "Name": "fts_data",
        "Options": {},
        "Scope": "local"
    }
]

The docker-compose.yml example utilizes a bind mount to ./data in the same directory.

Additional Architectures

Currently, the container is being cross compiled for linux/amd64, linux/arm64 and linux/arm/v7. If additional processor architectures are needed please open an issue and request a new one.

Docker Hub Page

https://hub.docker.com/r/freetakteam/freetakserver