freetak/Readme.md
Merith-TK bfc790355a
All checks were successful
Build Docker Image on Commit / build-and-publish (push) Successful in 16m30s
it builds, but does it run?
2025-07-04 22:27:34 +01:00

181 lines
No EOL
4.8 KiB
Markdown

# FreeTAKServer Docker Container
This Docker container provides a complete FreeTAKServer installation based on the official FreeTAKTeam installation script. It includes all necessary components and dependencies to run FreeTAKServer in a containerized environment.
## Features
- **All-in-one container**: Includes FreeTAKServer, Web UI, and Web Map
- **Multiple installation types**: Support for latest, stable, and legacy versions
- **Automated setup**: Based on the official FreeTAKHub-Installation scripts
- **Health checks**: Built-in container health monitoring
- **Persistent data**: Volume support for configuration and data persistence
## Quick Start
### Using Docker Compose (Recommended)
```bash
# Clone or navigate to the directory containing docker-compose.yml
docker-compose up -d
```
### Using the Run Script
```bash
# Build and run with latest version (default)
./run.sh
# Build and run with stable version
./run.sh stable
# Build and run with legacy version
./run.sh legacy
```
### Manual Docker Commands
```bash
# Build the image
docker build -t freetak-server .
# Run the container
docker run -d \
--name freetak-server \
-p 8087:8087 \
-p 8080:8080 \
-p 8443:8443 \
-p 19023:19023 \
-e INSTALL_TYPE=latest \
freetak-server
```
## Installation Types
The container supports three installation types via the `INSTALL_TYPE` environment variable:
- **`latest`** (default): Installs the most recent version from PyPI
- **`stable`**: Installs the stable version (v2.0.66)
- **`legacy`**: Installs the legacy version (v1.9.9.6) with Python 3.8
## Exposed Ports
- **8087**: Main FreeTAKServer port
- **8080**: Web UI port
- **8443**: HTTPS port (if configured)
- **19023**: FTS API port
## Access Points
After the container is running, you can access:
- **Web UI**: http://localhost:8080
- **Main API**: http://localhost:8087
- **API Endpoint**: http://localhost:19023
## Project Structure
```
/docker/services/freetak/
├── Dockerfile # Main container definition
├── docker-compose.yml # Docker Compose configuration
├── run.sh # Quick start script
├── scripts/ # Container scripts directory
│ ├── install_freetak.sh # Installation script
│ ├── start_freetak.sh # Simple startup script
│ ├── entrypoint.sh # Main entrypoint with signal handling
│ ├── healthcheck.sh # Health check script
│ ├── dev-helper.sh # Development helper script
│ └── README.md # Scripts documentation
└── README.md # This file
```
## Configuration
The container includes:
- Python virtual environment at `/opt/fts.venv`
- FreeTAKHub-Installation repository at `/opt/FreeTAKHub-Installation`
- Configuration files based on the installation type
- Ansible playbooks for automated setup
## Environment Variables
- `INSTALL_TYPE`: Installation type (latest, stable, legacy)
- `TZ`: Timezone (default: UTC)
- `DEBIAN_FRONTEND`: Set to noninteractive for automated installation
- `PY3_VER`: Python version (automatically set based on install type)
- `FTS_VENV`: Virtual environment path
- `CFG_RPATH`: Configuration path (automatically set based on install type)
## Volumes
To persist data and configuration:
```yaml
volumes:
- freetak_data:/opt/freetak/data
- freetak_config:/opt/FreeTAKHub-Installation
```
## Health Checks
The container includes a built-in health check that monitors the FreeTAKServer process:
```bash
# Check container health
docker ps
# Look for "healthy" status
```
## Troubleshooting
### View Logs
```bash
docker logs freetak-server
```
### Access Container Shell
```bash
docker exec -it freetak-server /bin/bash
```
### Check Service Status
```bash
docker exec -it freetak-server /opt/healthcheck.sh
```
### Restart Container
```bash
docker restart freetak-server
```
## Building from Source
The Dockerfile is based on Ubuntu 22.04 and includes:
1. System dependencies (Python, Ansible, Git, etc.)
2. Python virtual environment setup
3. FreeTAKHub-Installation repository clone
4. Ansible playbook execution
5. Service configuration and startup scripts
## Security Notes
- The container runs as a non-root user (`freetak`)
- SSH keys are generated for internal use
- All dependencies are installed from official repositories
- The installation follows the official FreeTAKTeam procedures
## License
This Docker container is based on the FreeTAKHub-Installation scripts, which are licensed under the Eclipse Public License 2.0 (EPL-2.0).
## Support
For issues related to FreeTAKServer itself, please refer to the [FreeTAKTeam GitHub repository](https://github.com/FreeTAKTeam/FreeTAKServer).
For Docker-specific issues, please check the container logs and ensure all required ports are available.