Replace all hardcoded lazyworkhorse.net references in compose files
with ${DOMAIN} variable substitution. Create .env.production and
.env.staging environment files. Update Makefile with ENV selection
(--env-file support) and staging/production targets.
Changes:
- All 13 compose YAML files: lazyworkhorse.net -> ${DOMAIN}
- New .env.production (DOMAIN=lazyworkhorse.net)
- New .env.staging (DOMAIN=staging.lazyworkhorse.net)
- Makefile: ENV var, --env-file flag, staging/production targets
- Gitea redirect regex updated for variable substitution
- CI workflow checkout URLs left hardcoded (infrastructure refs)
- Dockerfile SSH host refs left hardcoded (infrastructure refs)
Deploy: make ENV=staging all_up or make staging
make ENV=production all_up or make production
99 lines
3.3 KiB
YAML
99 lines
3.3 KiB
YAML
services:
|
|
freetakserver:
|
|
image: ghcr.io/freetakteam/freetakserver:master
|
|
container_name: freetakserver
|
|
hostname: freetakserver
|
|
restart: always
|
|
networks:
|
|
- tak_backend
|
|
volumes:
|
|
- /mnt/HoardingCow_docker_data/TAK/fts_data:/opt/fts:z,rw
|
|
ports:
|
|
- 8087:8087
|
|
- 8089:8089
|
|
- 8443:8443
|
|
- 9000:9000
|
|
- 19023:19023
|
|
environment:
|
|
FTS_FED_PASSWORD: "${FTS_FED_PASSWORD}"
|
|
FTS_CLIENT_CERT_PASSWORD: "${FTS_CLIENT_CERT_PASSWORD}"
|
|
FTS_WEBSOCKET_KEY: "${FTS_WEBSOCKET_KEY}"
|
|
FTS_SECRET_KEY: "${FTS_SECRET_KEY}"
|
|
FTS_CONNECTION_MESSAGE: "Welcome to FreeTAKServer. The Parrot is not dead. It's just resting"
|
|
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'
|
|
FTS_ROUTING_PROXY_SUBSCRIBE_PORT: 19030
|
|
FTS_ROUTING_PROXY_SUBSCRIBE_IP: 'freetakserver'
|
|
FTS_ROUTING_PROXY_PUBLISHER_PORT: 19032
|
|
FTS_ROUTING_PROXY_PUBLISHER_IP: 'freetakserver'
|
|
FTS_ROUTING_PROXY_SERVER_PORT: 19031
|
|
FTS_ROUTING_PROXY_SERVER_IP: 'freetakserver'
|
|
FTS_INTEGRATION_MANAGER_PULLER_PORT: 19033
|
|
FTS_INTEGRATION_MANAGER_PULLER_ADDRESS: 'freetakserver'
|
|
FTS_INTEGRATION_MANAGER_PUBLISHER_PORT: 19034
|
|
FTS_INTEGRATION_MANAGER_PUBLISHER_ADDRESS: 'freetakserver'
|
|
FTS_OPTIMIZE_API: "True"
|
|
FTS_DATA_RECEPTION_BUFFER: 1024
|
|
FTS_MAX_RECEPTION_TIME: 4
|
|
FTS_NUM_ROUTING_WORKERS: 3
|
|
FTS_COT_TO_DB: "True"
|
|
FTS_MAINLOOP_DELAY: 100
|
|
FTS_EMERGENCY_RADIUS: 0
|
|
FTS_LOG_LEVEL: "info"
|
|
|
|
freetakserver-ui:
|
|
image: ghcr.io/freetakteam/ui:latest
|
|
container_name: freetakserver-ui
|
|
hostname: freetakserver-ui
|
|
restart: always
|
|
networks:
|
|
- tak_net
|
|
ports:
|
|
- 5000:5000
|
|
volumes:
|
|
- /mnt/HoardingCow_docker_data/TAK/fts_ui_data:/home/freetak/data:z,rw
|
|
environment:
|
|
FTS_IP: "freetakserver"
|
|
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}"
|
|
FTS_API_KEY: 'Bearer token'
|
|
FTS_UI_SQLALCHEMY_DATABASE_URI: 'sqlite:////home/freetak/data/FTSServer-UI.db'
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.docker.network=traefik-net"
|
|
|
|
# HTTP -> HTTPS Redirect
|
|
- "traefik.http.routers.fts-ui-http.rule=Host(`tak.${DOMAIN}`)"
|
|
- "traefik.http.routers.fts-ui-http.entrypoints=web"
|
|
- "traefik.http.routers.fts-ui-http.middlewares=redirect-to-https"
|
|
|
|
# HTTPS Router
|
|
- "traefik.http.routers.fts-ui-https.rule=Host(`tak.${DOMAIN}`)"
|
|
- "traefik.http.routers.fts-ui-https.entrypoints=websecure"
|
|
- "traefik.http.routers.fts-ui-https.tls=true"
|
|
- "traefik.http.routers.fts-ui-https.tls.certresolver=njalla"
|
|
|
|
# Service & Port
|
|
- "traefik.http.services.fts-ui.loadbalancer.server.port=5000"
|
|
|
|
# Reuse your existing redirect middleware
|
|
- "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
|
|
|
|
networks:
|
|
tak_net:
|
|
external: true
|
|
tak_backend:
|
|
driver: bridge
|
|
name: tak_backend
|