# KrustyPlanet Terraform Terraform configuration for the KrustyPlanet VPS on Hetzner Cloud. ## What's Managed - Hetzner server (CPX22, Ubuntu 24.04) - Floating IP (87.99.133.81) - Firewall rules (80, 443, 22) - Persistent volume (40GB) - nginx reverse proxy - contact-api (Node.js email backend) - SSL certificates (Let's Encrypt) ## Usage ```bash # Initialize terraform init # Validate terraform validate # Plan terraform plan # Apply terraform apply ``` ## Variables See `variables.tf` for all configurable variables. Sensitive variables are stored in `terraform.tfvars`. ## Files - `main.tf` — Main Terraform configuration - `variables.tf` — Variable definitions - `provider.tf` — Provider configuration - `terraform.tfvars` — Sensitive variable values (gitignored) - `cloud-init.yaml.tpl` — Server bootstrap script - `nginx.conf.tpl` — nginx configuration template - `contact-api.conf.tpl` — contact-api proxy configuration - `contact-api.service.tpl` — contact-api systemd service ## Notes - Do NOT run `terraform apply` unless you want to recreate the server - Existing VPS configuration is preserved; this Terraform config will be used for future provisioning - SSL certificates are provisioned via Let's Encrypt - The floating IP is attached to the server and will survive rebuilds