# Port sources: services/prod/*docker-compose.yml (published ports) resource "hcloud_firewall" "this" { name = "prod-firewall" rule { # server ssh - wired to the vpn server's public IP only direction = "in" protocol = "tcp" port = "22" source_ips = var.allowed_ssh_source_ips } rule { # Traefik http/https direction = "in" protocol = "tcp" port = "80" source_ips = ["0.0.0.0/0", "::/0"] } rule { direction = "in" protocol = "tcp" port = "443" source_ips = ["0.0.0.0/0", "::/0"] } rule { # rustdesk hbbs direction = "in" protocol = "tcp" port = "21115" source_ips = ["0.0.0.0/0", "::/0"] } rule { direction = "in" protocol = "tcp" port = "21116" source_ips = ["0.0.0.0/0", "::/0"] } rule { direction = "in" protocol = "udp" port = "21116" source_ips = ["0.0.0.0/0", "::/0"] } rule { # rustdesk hbbr direction = "in" protocol = "tcp" port = "21117" source_ips = ["0.0.0.0/0", "::/0"] } rule { direction = "in" protocol = "tcp" port = "21119" source_ips = ["0.0.0.0/0", "::/0"] } rule { # traffic from over the private network direction = "in" protocol = "tcp" port = "1-65535" source_ips = [var.network_ip_range] } rule { direction = "in" protocol = "udp" port = "1-65535" source_ips = [var.network_ip_range] } } resource "hcloud_server" "this" { name = "prod" server_type = var.server_type image = var.image location = var.location ssh_keys = var.ssh_key_ids firewall_ids = [hcloud_firewall.this.id] labels = { role = "prod" } network { network_id = var.network_id ip = var.private_ip } }