hetzner-devops/devops.md

10 KiB

DevOps Stack: Self-Hosted Complete Solution

Overview Arsitektur

Stack Teknologi

  • Server: Hetzner Dedicated/Cloud
  • Container Runtime: Incus (LXD fork)
  • Reverse Proxy: Traefik
  • CI/CD: Drone CI
  • Git Hosting: Gitea
  • CDN: Cloudflare (opsional untuk public sites)

Filosofi Desain

Stack ini dirancang untuk memberikan solusi DevOps yang lengkap, self-hosted, dengan fokus pada:

  • Performance: Near-native performance dengan minimal overhead
  • Isolation: Perfect project isolation menggunakan container
  • Simplicity: Tools yang lightweight dan mudah dikelola
  • Cost-effectiveness: Single server untuk multiple projects
  • Scalability: Horizontal scaling dengan container spawning

Komponen Utama

1. Incus - Container Runtime

Keunggulan Incus

  • Community-driven: Fork dari LXD dengan governance yang lebih terbuka
  • Lightweight: Overhead minimal dibanding full virtualization
  • Fast startup: Container boot dalam 1-2 detik
  • System containers: Full OS experience dalam container
  • OCI support: Dapat menjalankan Docker images langsung

Perbandingan dengan Alternatif

  • vs Docker: Better isolation, persistent by default, system containers
  • vs LXD: Better packaging, community governance, faster development
  • vs VMs: Much lighter overhead, faster startup, better density
  • vs Proxmox: Simpler management, better CI/CD integration

Use Cases

  • Project isolation: Setiap client/project mendapat container terpisah
  • CI/CD environments: Ephemeral containers untuk testing
  • Development environments: Consistent development setups
  • Multi-tenancy: Perfect isolation antara different workloads

2. Traefik - Reverse Proxy & Load Balancer

Mengapa Traefik

  • Auto-discovery: Automatically detects new containers
  • Dynamic configuration: No manual config updates needed
  • Let's Encrypt: Automatic SSL certificate management
  • Modern architecture: Cloud-native design
  • Dashboard: Built-in monitoring interface

Perbandingan dengan Alternatif

  • vs Nginx: More dynamic, less manual configuration
  • vs HAProxy: Better container integration, easier setup
  • vs CF Zero Trust: Direct connection, better performance

Traffic Handling

  • Domain-based routing: Multiple websites pada satu server
  • Load balancing: Multiple containers per aplikasi
  • SSL termination: Centralized certificate management
  • Health checks: Automatic unhealthy container removal

3. Drone CI - Continuous Integration

Keunggulan Drone

  • Container-native: Perfect match dengan Incus
  • Lightweight: Minimal resource usage (~200MB)
  • YAML pipelines: Simple configuration
  • Plugin ecosystem: Extensible dengan community plugins
  • Real-time logs: Live build monitoring

Perbandingan dengan Alternatif

  • vs Jenkins: Much lighter, container-native
  • vs GitLab CI: Simpler, less resource hungry
  • vs GitHub Actions: Self-hosted, no usage limits

Pipeline Architecture

  • Build isolation: Each build dalam fresh container
  • Parallel execution: Multiple steps berjalan bersamaan
  • Service containers: Database containers untuk testing
  • Artifact management: Build results storage
  • Deployment integration: Direct deployment ke Incus

4. Gitea - Git Hosting

Mengapa Gitea

  • Lightweight: ~500MB memory usage
  • Self-hosted: Complete control atas code repositories
  • GitHub-like: Familiar interface dan features
  • No limits: Unlimited private repositories
  • Fast: Written in Go, excellent performance

Perbandingan dengan Alternatif

  • vs GitLab CE: Much lighter resource usage
  • vs GitHub: Self-hosted, no usage limits
  • vs Forgejo: Gitea lebih stable, larger community

Features

  • Git hosting: Standard Git operations
  • Issue tracking: Bug dan feature request management
  • Pull requests: Code review workflow
  • Organizations: Multi-team management
  • Webhooks: CI/CD integration

5. Cloudflare CDN - Content Delivery (Opsional)

Kapan Menggunakan CDN

  • Public websites: Customer-facing websites
  • Static assets: Images, CSS, JavaScript files
  • Global audience: Users dari berbagai geografis
  • Performance critical: Website speed penting

Kapan Skip CDN

  • Internal tools: Admin panels, internal APIs
  • Dynamic content: APIs dengan personalized responses
  • Regional audience: Users mostly dari satu region
  • Cost sensitivity: Ingin minimal external dependencies

Workflow Development

Daily Development Flow

  1. Developer workflow: Code locally → Git push ke Gitea
  2. CI trigger: Gitea webhook memicu Drone pipeline
  3. Testing: Drone spawns test containers, runs tests
  4. Build: Application build dalam isolated environment
  5. Deploy: Successful builds deployed ke staging/production containers
  6. Routing: Traefik automatically routes traffic ke new containers

Environment Management

  • Development: Local development containers
  • Staging: Staging containers untuk testing
  • Production: Production containers untuk live traffic
  • Feature branches: Temporary containers untuk feature testing

Deployment Strategies

  • Blue-green: Old dan new containers running, switch traffic
  • Rolling updates: Gradual replacement containers
  • Canary releases: Small percentage traffic ke new version
  • Rollback: Quick revert ke previous container snapshots

Multi-Project Architecture

Project Isolation Strategy

Setiap project/client mendapat:

  • Dedicated containers: App dan database containers terpisah
  • Isolated networks: Network segmentation per project
  • Resource limits: CPU dan memory allocation per project
  • Independent backups: Snapshot dan backup per project

Resource Management

  • Resource allocation: Fair sharing antara projects
  • Monitoring: Per-project resource usage tracking
  • Scaling: Independent scaling per project needs
  • Billing: Resource usage tracking untuk client billing

Security Considerations

  • Network isolation: Projects tidak bisa access satu sama lain
  • Secret management: Per-project environment variables
  • Access control: Developer access permissions per project
  • Audit logging: Track access dan changes per project

Performance Considerations

Container Performance

  • Native performance: Near-bare-metal performance
  • Memory efficiency: Shared kernel, lower overhead
  • Fast I/O: Direct filesystem access
  • Network performance: Native Linux networking

Scaling Strategies

  • Horizontal scaling: Add more application containers
  • Vertical scaling: Increase container resource limits
  • Database scaling: Read replicas, connection pooling
  • Caching: Redis containers untuk application caching

Monitoring & Observability

  • Container metrics: CPU, memory, disk usage per container
  • Application metrics: Custom application metrics
  • Log aggregation: Centralized logging across containers
  • Alerting: Automated alerts untuk issues

Backup & Disaster Recovery

Backup Strategy

  • Container snapshots: Point-in-time container states
  • Database dumps: Regular database backups
  • Configuration backups: CI/CD configuration dan secrets
  • Automated scheduling: Daily/weekly backup schedules

Disaster Recovery

  • RTO (Recovery Time Objective): Target recovery time
  • RPO (Recovery Point Objective): Acceptable data loss
  • Backup restoration: Quick container restoration process
  • Geographic backup: Off-site backup storage

Security Best Practices

Container Security

  • User namespaces: Non-root containers
  • Resource limits: Prevent resource exhaustion
  • Network policies: Restrict container communication
  • Image scanning: Vulnerability scanning untuk base images

Access Control

  • SSH key management: Secure server access
  • VPN/Zero Trust: Secure admin access
  • Role-based access: Different permission levels
  • Audit trails: Log all administrative actions

Data Protection

  • Encryption at rest: Encrypted storage volumes
  • Encryption in transit: TLS untuk all communications
  • Secret management: Secure environment variables
  • Regular updates: Security patch management

Cost Optimization

Server Sizing

  • Right-sizing: Match server specs dengan workload
  • Resource utilization: Monitor dan optimize resource usage
  • Scaling timing: Scale up saat necessary, scale down saat possible

Operational Efficiency

  • Automation: Reduce manual operational overhead
  • Monitoring: Proactive issue detection
  • Maintenance windows: Scheduled maintenance procedures
  • Documentation: Comprehensive operational documentation

Migration Planning

From Existing Infrastructure

  • Assessment: Current infrastructure evaluation
  • Migration strategy: Phased migration approach
  • Testing: Extensive testing sebelum cutover
  • Rollback plan: Contingency planning

Data Migration

  • Database migration: Schema dan data transfer
  • File migration: Application files dan assets
  • Configuration migration: Settings dan environment variables
  • DNS cutover: Traffic redirection planning

Maintenance & Operations

Regular Maintenance

  • System updates: OS dan package updates
  • Container updates: Base image updates
  • Security patches: Regular security updates
  • Performance tuning: Optimization berdasarkan metrics

Troubleshooting

  • Log analysis: Centralized log analysis
  • Performance debugging: Container performance issues
  • Network issues: Connectivity troubleshooting
  • Storage issues: Disk space dan I/O problems

Capacity Planning

  • Growth projections: Anticipated resource needs
  • Scaling thresholds: When to add resources
  • Hardware planning: Future server requirements
  • Budget planning: Cost projections

Conclusion

Stack ini menyediakan solusi DevOps yang lengkap dan modern dengan:

  • Complete self-hosting: No vendor lock-in
  • Professional grade: Enterprise-level features
  • Cost effective: Single server untuk multiple projects
  • Scalable: Growth-ready architecture
  • Maintainable: Simple operations dan troubleshooting

Perfect untuk development teams yang ingin complete control atas infrastructure dengan modern tooling dan practices.