quarkshologridledger/infra/network.tf
Pedro Faria da Costa b6bc68de23
Some checks are pending
CI / tongo-core (push) Waiting to run
CI / web-terminal (push) Waiting to run
Deploy / build-and-push (push) Waiting to run
Deploy / deploy (push) Blocked by required conditions
Infrastructure / plan (push) Waiting to run
Infrastructure / apply (push) Blocked by required conditions
add infra
2026-07-05 23:44:51 +01:00

104 lines
3 KiB
HCL

# ──────────────────────────────────────────────────────────────
# Quark's Holo-Grid Ledger — SSH key, network & firewalls
# ──────────────────────────────────────────────────────────────
# ── SSH key ──────────────────────────────────────────────────
resource "hcloud_ssh_key" "deploy" {
name = "hologrid-deploy-${terraform.workspace}"
public_key = var.ssh_public_key
}
# ── Private network ─────────────────────────────────────────
resource "hcloud_network" "internal" {
count = (terraform.workspace == "staging" || terraform.workspace == "production") ? 1 : 0
name = "hologrid-internal-${terraform.workspace}"
ip_range = "10.0.0.0/16"
}
resource "hcloud_network_subnet" "servers" {
count = (terraform.workspace == "staging" || terraform.workspace == "production") ? 1 : 0
network_id = hcloud_network.internal[0].id
type = "cloud"
network_zone = "eu-central"
ip_range = "10.0.1.0/24"
}
# ── Firewall: Forgejo server ────────────────────────────────
resource "hcloud_firewall" "forgejo" {
count = terraform.workspace == "tooling" ? 1 : 0
name = "hologrid-forgejo"
# SSH (Host OS)
rule {
direction = "in"
protocol = "tcp"
port = "22"
source_ips = ["0.0.0.0/0", "::/0"]
}
# Forgejo SSH (Git pushes)
rule {
direction = "in"
protocol = "tcp"
port = "2222"
source_ips = ["0.0.0.0/0", "::/0"]
}
# HTTP
rule {
direction = "in"
protocol = "tcp"
port = "80"
source_ips = ["0.0.0.0/0", "::/0"]
}
# HTTPS
rule {
direction = "in"
protocol = "tcp"
port = "443"
source_ips = ["0.0.0.0/0", "::/0"]
}
# Forgejo Web UI
rule {
direction = "in"
protocol = "tcp"
port = "3000"
source_ips = ["0.0.0.0/0", "::/0"]
}
}
# ── Firewall: App server ────────────────────────────────────
resource "hcloud_firewall" "app" {
count = (terraform.workspace == "staging" || terraform.workspace == "production") ? 1 : 0
name = "hologrid-app-${terraform.workspace}"
# SSH
rule {
direction = "in"
protocol = "tcp"
port = "22"
source_ips = ["0.0.0.0/0", "::/0"]
}
# HTTP
rule {
direction = "in"
protocol = "tcp"
port = "80"
source_ips = ["0.0.0.0/0", "::/0"]
}
# HTTPS
rule {
direction = "in"
protocol = "tcp"
port = "443"
source_ips = ["0.0.0.0/0", "::/0"]
}
}