Initial project setup for FreeTAKServer & FreeTAKHub deployment
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
# FreeTAKServer Security Configuration
|
||||
FTS_FED_PASSWORD=changeme_federation_password
|
||||
FTS_CLIENT_CERT_PASSWORD=changeme_cert_password
|
||||
FTS_WEBSOCKET_KEY=changeme_websocket_key
|
||||
FTS_SECRET_KEY=changeme_secret_key_$(openssl rand -hex 16)
|
||||
|
||||
# Server Configuration
|
||||
FTS_IP=192.168.0.152
|
||||
FTS_CONNECTION_MESSAGE=Welcome to TacAware FreeTAKServer
|
||||
FTS_LOG_LEVEL=info
|
||||
|
||||
# API Configuration
|
||||
FTS_API_KEY=Bearer your_api_token_here
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
# Environment files with secrets
|
||||
.env
|
||||
|
||||
# Docker volumes data
|
||||
**/data/
|
||||
**/*.db
|
||||
**/logs/
|
||||
|
||||
# Temporary files
|
||||
*.tmp
|
||||
*.log
|
||||
.DS_Store
|
||||
@@ -0,0 +1,99 @@
|
||||
# TacAware - FreeTAKServer & FreeTAKHub Deployment
|
||||
|
||||
This project deploys FreeTAKServer and FreeTAKHub components using Docker Compose to a Proxmox container.
|
||||
|
||||
## Architecture
|
||||
|
||||
- **FreeTAKServer**: Core TAK server implementation
|
||||
- **FreeTAKServer-UI**: Web interface for server management
|
||||
- **Target**: Proxmox container 111 on askaban (192.168.0.152)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Proxmox host with container 111 running Docker
|
||||
- SSH access to askaban (192.168.0.152)
|
||||
- Docker and docker-compose in container 111
|
||||
|
||||
## Quick Start
|
||||
|
||||
1. **Clone the repository**
|
||||
```bash
|
||||
git clone git@git.homelab.lukasbenner.de:Lukas/tac-aware.git
|
||||
cd tac-aware
|
||||
```
|
||||
|
||||
2. **Configure environment**
|
||||
```bash
|
||||
cp .env.example .env
|
||||
# Edit .env with your settings
|
||||
nano .env
|
||||
```
|
||||
|
||||
3. **Deploy to container 111**
|
||||
```bash
|
||||
chmod +x deploy.sh
|
||||
./deploy.sh
|
||||
```
|
||||
|
||||
## Services
|
||||
|
||||
| Service | Port | Description |
|
||||
|---------|------|-------------|
|
||||
| FreeTAKServer | 8080 | Data Package Port |
|
||||
| FreeTAKServer | 8087 | CoT Port (TCP) |
|
||||
| FreeTAKServer | 8089 | SSL CoT Port |
|
||||
| FreeTAKServer | 8443 | SSL Data Package Port |
|
||||
| FreeTAKServer | 9000 | Federation Port |
|
||||
| FreeTAKServer | 19023 | API Port |
|
||||
| FreeTAKServer-UI | 5000 | Web Interface |
|
||||
|
||||
## Management
|
||||
|
||||
### On container 111 (via Proxmox host):
|
||||
```bash
|
||||
# SSH to container
|
||||
ssh root@192.168.0.152
|
||||
pct enter 111
|
||||
|
||||
# Or execute directly
|
||||
ssh root@192.168.0.152 "pct exec 111 -- docker ps"
|
||||
ssh root@192.168.0.152 "pct exec 111 -- docker compose -f /root/tac-aware/docker-compose.yml logs -f"
|
||||
```
|
||||
|
||||
### View logs:
|
||||
```bash
|
||||
ssh root@192.168.0.152 "pct exec 111 -- docker logs freetakserver"
|
||||
ssh root@192.168.0.152 "pct exec 111 -- docker logs freetakserver-ui"
|
||||
```
|
||||
|
||||
### Stop services:
|
||||
```bash
|
||||
ssh root@192.168.0.152 "pct exec 111 -- docker compose -f /root/tac-aware/docker-compose.yml down"
|
||||
```
|
||||
|
||||
## Development Workflow
|
||||
|
||||
1. Make changes to configuration/files
|
||||
2. Commit and push to repo:
|
||||
```bash
|
||||
git add .
|
||||
git commit -m "Update configuration"
|
||||
git push origin main
|
||||
```
|
||||
3. Deploy changes:
|
||||
```bash
|
||||
./deploy.sh
|
||||
```
|
||||
|
||||
## Security Notes
|
||||
|
||||
- Change all default passwords in `.env`
|
||||
- Use strong passwords for FTS_FED_PASSWORD and FTS_CLIENT_CERT_PASSWORD
|
||||
- Consider using SSL/TLS for production deployments
|
||||
- Review port exposure - some ports may not need external access
|
||||
|
||||
## Links
|
||||
|
||||
- [FreeTAKServer Documentation](https://freetakteam.github.io/FreeTAKServer-User-Docs/)
|
||||
- [FreeTAKTeam GitHub](https://github.com/FreeTAKTeam)
|
||||
- [Repository](https://git.homelab.lukasbenner.de/Lukas/tac-aware)
|
||||
@@ -0,0 +1,46 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Deploy FreeTAKServer to Proxmox container 111 on askaban
|
||||
set -e
|
||||
|
||||
ASKABAN_IP="192.168.0.152"
|
||||
CONTAINER_ID="111"
|
||||
REMOTE_DIR="/root/tac-aware"
|
||||
|
||||
echo "=== TacAware FreeTAKServer Deployment ==="
|
||||
echo "Target: ${ASKABAN_IP}, Container: ${CONTAINER_ID}"
|
||||
echo
|
||||
|
||||
# Check if .env exists
|
||||
if [ ! -f .env ]; then
|
||||
echo "Warning: .env file not found. Creating from .env.example..."
|
||||
cp .env.example .env
|
||||
echo "Please edit .env with your settings before deploying."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Copy files to container 111 on askaban
|
||||
echo "Copying files to container ${CONTAINER_ID}..."
|
||||
ssh root@${ASKABAN_IP} "pct exec ${CONTAINER_ID} -- mkdir -p ${REMOTE_DIR}"
|
||||
|
||||
# Use rsync or scp to copy files
|
||||
rsync -avz --exclude='.git' --exclude='node_modules' \
|
||||
./ root@${ASKABAN_IP}:/tmp/tac-aware-deploy/
|
||||
|
||||
ssh root@${ASKABAN_IP} "pct push ${CONTAINER_ID} /tmp/tac-aware-deploy ${REMOTE_DIR} --perms --repeat"
|
||||
|
||||
# Deploy on container
|
||||
echo "Starting deployment in container..."
|
||||
ssh root@${ASKABAN_IP} << EOF
|
||||
pct exec ${CONTAINER_ID} -- bash -c "cd ${REMOTE_DIR} && \
|
||||
docker compose down && \
|
||||
docker compose pull && \
|
||||
docker compose up -d && \
|
||||
echo '=== Containers Status ===' && \
|
||||
docker ps"
|
||||
EOF
|
||||
|
||||
echo
|
||||
echo "Deployment complete!"
|
||||
echo "FreeTAKServer UI should be available at: http://${FTS_IP:-192.168.0.152}:5000"
|
||||
echo "FreeTAKServer ports: 8080, 8087, 8089, 8443, 9000, 19023"
|
||||
@@ -0,0 +1,74 @@
|
||||
services:
|
||||
freetakserver:
|
||||
image: ghcr.io/freetakteam/freetakserver:latest
|
||||
hostname: freetakserver
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- taknet
|
||||
volumes:
|
||||
- fts-data:/opt/fts/
|
||||
ports:
|
||||
- 8080:8080 # DataPackagePort
|
||||
- 8087:8087 # CoTPort
|
||||
- 8089:8089 # SSLCoTPort
|
||||
- 8443:8443 # SSLDataPackagePort
|
||||
- 9000:9000 # FederationPort
|
||||
- 19023:19023 # APIPort
|
||||
|
||||
environment:
|
||||
# Security - CHANGE THESE IN .env FILE
|
||||
FTS_FED_PASSWORD: "${FTS_FED_PASSWORD:-defaultpass}"
|
||||
FTS_CLIENT_CERT_PASSWORD: "${FTS_CLIENT_CERT_PASSWORD:-supersecret}"
|
||||
FTS_WEBSOCKET_KEY: "${FTS_WEBSOCKET_KEY:-YourWebsocketKey}"
|
||||
FTS_SECRET_KEY: "${FTS_SECRET_KEY:-vnkdjnfjknfl1232#}"
|
||||
FTS_CONNECTION_MESSAGE: "${FTS_CONNECTION_MESSAGE:-Welcome to FreeTAKServer}"
|
||||
|
||||
# Networking
|
||||
FTS_COT_PORT: 8087
|
||||
FTS_SSLCOT_PORT: 8089
|
||||
FTS_API_PORT: 19023
|
||||
FTS_FED_PORT: 9000
|
||||
FTS_DP_ADDRESS: 'freetakserver'
|
||||
FTS_USER_ADDRESS: 'freetakserver'
|
||||
FTS_API_ADDRESS: 'freetakserver'
|
||||
|
||||
# Performance
|
||||
FTS_OPTIMIZE_API: True
|
||||
FTS_DATA_RECEPTION_BUFFER: 1024
|
||||
FTS_MAX_RECEPTION_TIME: 4
|
||||
FTS_NUM_ROUTING_WORKERS: 3
|
||||
FTS_MAINLOOP_DELAY: 100
|
||||
FTS_COT_TO_DB: True
|
||||
FTS_EMERGENCY_RADIUS: 0
|
||||
FTS_LOG_LEVEL: "${FTS_LOG_LEVEL:-info}"
|
||||
|
||||
freetakserver-ui:
|
||||
image: ghcr.io/freetakteam/ui:latest
|
||||
hostname: freetakserver-ui
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- taknet
|
||||
ports:
|
||||
- 5000:5000
|
||||
volumes:
|
||||
- fts-ui-data:/home/freetak/
|
||||
environment:
|
||||
FTS_IP: "${FTS_IP:-localhost}"
|
||||
FTS_API_PORT: 19023
|
||||
FTS_API_PROTO: 'http'
|
||||
FTS_UI_EXPOSED_IP: 'freetakserver-ui'
|
||||
FTS_MAP_EXPOSED_IP: '127.0.0.1'
|
||||
FTS_MAP_PORT: 8000
|
||||
FTS_MAP_PROTO: 'http'
|
||||
FTS_UI_PORT: 5000
|
||||
FTS_UI_WSKEY: "${FTS_WEBSOCKET_KEY:-YourWebsocketKey}"
|
||||
FTS_API_KEY: "${FTS_API_KEY:-Bearer token}"
|
||||
FTS_UI_SQLALCHEMY_DATABASE_URI: 'sqlite:////home/freetak/FTSServer-UI.db'
|
||||
|
||||
volumes:
|
||||
fts-data:
|
||||
fts-ui-data:
|
||||
|
||||
networks:
|
||||
taknet:
|
||||
driver: bridge
|
||||
Reference in New Issue
Block a user