This repository contains Docker Compose configurations for various self-hosted services, designed to be easily deployed and managed.
Automated Docker container updates with scheduled cleanup and monitoring.
Services:
watchtower: Automated container update service
Ports:
8083: Web interface for monitoring and manual updates
Features:
- Automatic container image updates
- Scheduled cleanup of old images
- Configurable update schedule (default: daily at 1 AM)
- Cleanup of unused images after updates
- 30-second timeout for updates
ADS-B flight tracking setup with multiple feeders and web interfaces. With help of https://github.com/sdr-enthusiasts
Services:
ultrafeeder: Multi-purpose ADS-B decoder and feeder with web interfacefr24: FlightRadar24 feeder servicepiaware: FlightAware feeder service
Ports:
8080: Ultrafeeder web interface (TAR1090 map)8754: FlightRadar24 status interface
Features:
- Real-time aircraft tracking and display
- Multiple flight tracking service integration
- Interactive web-based flight map
- Range and altitude visualization
- MLAT (Multilateration) support
- Requires RTL-SDR dongle for ADS-B reception
Hardware Requirements:
- RTL-SDR USB dongle for ADS-B reception
- udev rules included (
60-rtl-sdr.rules) for proper USB device access
Ansible playbooks for automated deployment and system setup.
Available Playbooks:
install-docker.yml: Automated Docker installation on Ubuntu/Raspberry Pi systems
- Docker installed and Swarm mode initialized
- For flight tracking: RTL-SDR dongle and appropriate antenna
Tip: Use the included Ansible playbook to automatically install Docker:
cd ansible && ansible-playbook -i your_inventory playbooks/install-docker.yml
Create a .env file in the root directory with required environment variables:
Example .env file:
# Timezone
TZ=America/New_York
# Flight tracking location settings (required for accurate tracking)
FEEDER_TZ=America/New_York
FEEDER_LAT=40.7128
FEEDER_LONG=-74.0060
FEEDER_ALT_M=10
FEEDER_NAME="My ADS-B Station"
# Flight tracking service keys (obtain from respective services)
FR24_SHARING_KEY=your_fr24_sharing_key_here
FLIGHTAWARE_FEEDER_ID=your_flightaware_feeder_id_here
# Optional: HeyWhatsThat integration for range rings
FEEDER_HEYWHATSTHAT_ID=your_heywhatsthat_id
FEEDER_HEYWHATSTHAT_ALTS=12192,24384,36576Important: Create the data directories before starting services:
# Create flight tracking data directories (optional, containers will create them)
sudo mkdir -p /opt/adsb/ultrafeeder/globe_history /opt/adsb/ultrafeeder/graphs1090Use the provided script to deploy all Compose files as a Docker Swarm stack:
./start_all.shThis script will:
- Load environment variables from
.envif present - Ensure the
radar-networkoverlay network exists - Find all
docker-compose.ymlfiles and deploy them withdocker stack deploy
You can deploy a specific Compose file as its own stack:
# Example: deploy only the flight tracking services
docker stack deploy -c fr24feed/docker-compose.yml fr24feed
# Example: deploy only Watchtower for automated updates
docker stack deploy -c watchtower/docker-compose.yml watchtower- Web Interface: Access at
http://your-host:8083for monitoring - Automatic Updates: Containers are checked daily at 1 AM
- Cleanup: Old images are automatically removed after updates
- Manual Updates: Trigger updates through the web interface if needed
- Web Interface: Access the flight map at
http://your-host:8080 - Service Registration:
- Register with FlightRadar24 and FlightAware to obtain sharing keys
- Configure your location coordinates for accurate tracking
- Hardware Setup:
- Connect RTL-SDR dongle
- Install udev rules:
sudo cp fr24feed/60-rtl-sdr.rules /etc/udev/rules.d/ - Reload udev rules:
sudo udevadm control --reload-rules
.
├── watchtower/
│ └── docker-compose.yml # Automated container updates
├── fr24feed/
│ ├── docker-compose.yml # Flight tracking services
│ └── 60-rtl-sdr.rules # RTL-SDR udev rules
├── ultrafeeder/
│ └── docker-compose.yml # Ultrafeeder service
├── piware/
│ └── docker-compose.yml # PiAware service
├── ansible/
│ └── playbooks/ # Ansible automation (optional)
├── start_all.sh # Automated startup script
├── .env # Environment configuration (create this)
└── README.md # This file
- Review exposed ports and adjust firewall rules as needed
- Use strong passwords and enable authentication where available
- Consider using reverse proxy for HTTPS termination
- Regularly update container images for security patches
- Watchtower requires Docker socket access - ensure proper security
- Permission Issues: Ensure Docker daemon is running and user has proper permissions
- Port Conflicts: Check that required ports are not in use by other services
- RTL-SDR Not Detected: Verify udev rules are installed and USB device permissions
- Environment Variables: Ensure
.envfile is properly configured with required values - Watchtower Updates: Check logs if containers aren't updating automatically
View service logs:
# View logs for a service in the stack
docker service logs shipyard_ultrafeeder
docker service logs shipyard_watchtower