You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Oct 10, 2025. It is now read-only.
Add Hetzner Cloud provider support and validate complete deployment.
This issue implements Phase 4 of the parent issue #3 (Migrate Torrust Tracker Demo from Digital Ocean to Hetzner).
Scope
Implement a multi-provider architecture that properly separates environments from infrastructure providers, ensuring the system can scale to support unlimited providers without code changes.
Design Approach
Clear Separation: Environment (development/staging/production) vs Provider (libvirt/hetzner/aws/etc.)
Pluggable Provider System: Each provider self-contained with standard interface
Scalable Architecture: Adding new providers requires zero changes to existing code
Zero Breaking Changes: Backward compatibility maintained with default values
Tasks
Core Architecture
Rename environment files (local → development) to avoid confusion
Create provider interface system (infrastructure/scripts/providers/provider-interface.sh)
Implement pluggable provider modules in infrastructure/terraform/providers/
Update Makefile to require both ENVIRONMENT and PROVIDER parameters
Create Hetzner provider script with standard interface functions
Add Hetzner cloud-init adaptations
Create provider-specific environment templates
Enhanced Commands
Add make infra-providers - List available providers
Add make infra-environments - List available environments
Add make provider-info PROVIDER=hetzner - Get provider details
Update all infrastructure commands to use ENVIRONMENT + PROVIDER pattern
Validation
Test complete deployment pipeline on Hetzner
Verify all services start correctly
Test tracker functionality (announce, scrape)
Confirm firewall rules work correctly
Performance and connectivity testing
Usage Examples
# Development environment on local infrastructure
make infra-apply ENVIRONMENT=development PROVIDER=libvirt
# Staging environment on DigitalOcean (future)
make infra-apply ENVIRONMENT=staging PROVIDER=digitalocean
# Production environment on Hetzner
make infra-apply ENVIRONMENT=production PROVIDER=hetzner
Implementation Plan
Detailed implementation plan available in: docs/plans/multi-provider-architecture-plan.md
Definition of Done
Multi-provider architecture implemented with pluggable system
Hetzner provider working and tested
All existing commands work with backward compatibility
Objective
Add Hetzner Cloud provider support and validate complete deployment.
This issue implements Phase 4 of the parent issue #3 (Migrate Torrust Tracker Demo from Digital Ocean to Hetzner).
Scope
Implement a multi-provider architecture that properly separates environments from infrastructure providers, ensuring the system can scale to support unlimited providers without code changes.
Design Approach
Tasks
Core Architecture
local→development) to avoid confusioninfrastructure/scripts/providers/provider-interface.sh)infrastructure/terraform/providers/ENVIRONMENTandPROVIDERparametersHetzner Provider Implementation
Enhanced Commands
make infra-providers- List available providersmake infra-environments- List available environmentsmake provider-info PROVIDER=hetzner- Get provider detailsENVIRONMENT+PROVIDERpatternValidation
Usage Examples
Implementation Plan
Detailed implementation plan available in:
docs/plans/multi-provider-architecture-plan.mdDefinition of Done
Related Issues
Provider Firewall Consideration
Deliverable
Working Hetzner deployment with IP access and clean multi-provider architecture that scales to unlimited providers.