No description
Find a file
Merith-TK b2a0663689
All checks were successful
Build Docker Image on Commit / build-and-publish (push) Successful in 1m20s
remove unessecary copy
2025-07-06 17:27:13 +01:00
.forgejo/workflows restore build scripts.. 2025-07-06 17:24:09 +01:00
scripts rebase off official files... mostly 2025-07-06 17:08:07 +01:00
.gitignore clense for rebuild 2025-07-06 16:35:35 +01:00
build.sh rebase off official files... mostly 2025-07-06 17:08:07 +01:00
docker-compose.yml rebase off official files... mostly 2025-07-06 17:08:07 +01:00
Dockerfile remove unessecary copy 2025-07-06 17:27:13 +01:00
Dockerfile.db restore build scripts.. 2025-07-06 17:24:09 +01:00
EDIT_ME.env rebase off official files... mostly 2025-07-06 17:08:07 +01:00
README.md rebase off official files... mostly 2025-07-06 17:08:07 +01:00

TAK Server Docker Setup

A self-contained Docker setup for TAK Server that automatically extracts and configures from the release files.

Quick Start

  1. Build the Docker image:

    ./build.sh
    
  2. Configure environment variables: Edit EDIT_ME.env and fill in the required values:

    # Required fields to fill in:
    POSTGRES_PASSWORD='your_db_password'
    CA_NAME='your_ca_name'
    CA_PASS='your_ca_password'
    STATE='your_state'
    CITY='your_city'
    ORGANIZATION='your_organization'
    ORGANIZATIONAL_UNIT='your_org_unit'
    TAKSERVER_CERT_PASS='your_takserver_cert_password'
    ADMIN_CERT_NAME='admin_username'
    ADMIN_CERT_PASS='admin_password'
    
  3. Start the services:

    docker-compose up
    

Features

  • Self-contained: Automatically extracts TAK Server from release files
  • Single image: Everything built into one Docker image (plus database)
  • Environment driven: All configuration through environment variables
  • Automatic setup: Certificates, database schema, and admin user created automatically
  • Persistent data: Docker volumes for data persistence
  • Simple deployment: Just build and run

Structure

  • Dockerfile - Self-contained TAK Server image
  • docker-compose.yml - Orchestration with PostgreSQL database
  • EDIT_ME.env - Environment variables configuration
  • build.sh - Build script
  • scripts/docker_entrypoint.sh - Main entrypoint with extraction and startup logic
  • scripts/coreConfigEnvHelper.py - Configuration helper

Environment Variables

Required

  • POSTGRES_PASSWORD - Database password
  • CA_NAME - Certificate Authority name
  • CA_PASS - Certificate Authority password
  • STATE - State for certificate generation
  • CITY - City for certificate generation
  • ORGANIZATION - Organization for certificate generation
  • ORGANIZATIONAL_UNIT - Organizational unit for certificate generation
  • TAKSERVER_CERT_PASS - TAK Server certificate password
  • ADMIN_CERT_NAME - Admin username
  • ADMIN_CERT_PASS - Admin password

Optional (with defaults)

  • CONFIG_MAX_HEAP=512 - Config service heap size (MB)
  • MESSAGING_MAX_HEAP=2048 - Messaging service heap size (MB)
  • API_MAX_HEAP=1024 - API service heap size (MB)
  • PLUGIN_MANAGER_MAX_HEAP=512 - Plugin Manager heap size (MB)
  • POSTGRES_DB=cot - Database name
  • POSTGRES_USER=martiuser - Database user
  • POSTGRES_URL=jdbc:postgresql://takdb:5432/cot - Database URL

Ports

  • 8443 - HTTPS API
  • 8444 - Certificate enrollment
  • 8446 - Federation
  • 8089 - Web interface
  • 9000 - Messaging
  • 9001 - Streaming

Volumes

  • takserver_data - TAK Server data (logs, certs, config)
  • takdb_data - PostgreSQL data

What the entrypoint does

  1. Extract TAK Server - Automatically extracts from /takserver-release/ if not already done
  2. Validate environment - Checks all required environment variables
  3. Initialize directories - Creates necessary data directories
  4. Generate certificates - Creates CA, server, and admin certificates if needed
  5. Configure TAK Server - Updates CoreConfig.xml with environment variables
  6. Initialize database - Waits for database and runs schema setup
  7. Start services - Launches all TAK Server services in correct order
  8. Create admin user - Adds the admin user after services are ready

Manual file editing

If you need to customize CoreConfig.xml or other configuration files beyond what environment variables provide, you can:

  1. Start the container once to generate initial files
  2. Stop the container
  3. Edit files in the takserver_data volume
  4. Restart the container

The entrypoint will preserve existing configuration files and only regenerate what's missing.