chore: full stack stability and migration fixes, plus react UI progress
This commit is contained in:
47
deploy/terraform/firewall.tf
Normal file
47
deploy/terraform/firewall.tf
Normal file
@@ -0,0 +1,47 @@
|
||||
resource "hcloud_firewall" "madbase_firewall" {
|
||||
name = "madbase-firewall"
|
||||
|
||||
rule {
|
||||
direction = "in"
|
||||
protocol = "tcp"
|
||||
port = "22"
|
||||
source_ips = [
|
||||
"0.0.0.0/0",
|
||||
"::/0"
|
||||
]
|
||||
}
|
||||
|
||||
rule {
|
||||
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 {
|
||||
direction = "in"
|
||||
protocol = "icmp"
|
||||
source_ips = [
|
||||
"0.0.0.0/0",
|
||||
"::/0"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
resource "hcloud_firewall_resource" "fw_server1" {
|
||||
firewall_id = hcloud_firewall.madbase_firewall.id
|
||||
server_id = hcloud_server.server1.id
|
||||
}
|
||||
45
deploy/terraform/main.tf
Normal file
45
deploy/terraform/main.tf
Normal file
@@ -0,0 +1,45 @@
|
||||
terraform {
|
||||
required_providers {
|
||||
hcloud = {
|
||||
source = "hetznercloud/hcloud"
|
||||
version = "~> 1.45"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
variable "hcloud_token" {
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "ssh_public_key_path" {
|
||||
default = "~/.ssh/id_rsa.pub"
|
||||
}
|
||||
|
||||
variable "location" {
|
||||
default = "fsn1" # Falkenstein, Germany
|
||||
}
|
||||
|
||||
variable "server_type" {
|
||||
default = "cpx21" # 3 vCPU, 4GB RAM
|
||||
}
|
||||
|
||||
provider "hcloud" {
|
||||
token = var.hcloud_token
|
||||
}
|
||||
|
||||
resource "hcloud_ssh_key" "default" {
|
||||
name = "madbase-deploy-key"
|
||||
public_key = file(var.ssh_public_key_path)
|
||||
}
|
||||
|
||||
resource "hcloud_network" "madbase_net" {
|
||||
name = "madbase-net"
|
||||
ip_range = "10.0.0.0/16"
|
||||
}
|
||||
|
||||
resource "hcloud_network_subnet" "madbase_subnet" {
|
||||
network_id = hcloud_network.madbase_net.id
|
||||
type = "cloud"
|
||||
network_zone = "eu-central"
|
||||
ip_range = "10.0.1.0/24"
|
||||
}
|
||||
97
deploy/terraform/servers.tf
Normal file
97
deploy/terraform/servers.tf
Normal file
@@ -0,0 +1,97 @@
|
||||
resource "hcloud_placement_group" "madbase_pg" {
|
||||
name = "madbase-placement-group"
|
||||
type = "spread"
|
||||
}
|
||||
|
||||
resource "hcloud_server" "server1" {
|
||||
name = "madbase-server1"
|
||||
image = "debian-12"
|
||||
server_type = var.server_type
|
||||
location = var.location
|
||||
ssh_keys = [hcloud_ssh_key.default.id]
|
||||
placement_group_id = hcloud_placement_group.madbase_pg.id
|
||||
user_data = <<-EOT
|
||||
#cloud-config
|
||||
runcmd:
|
||||
- apt-get update
|
||||
- apt-get install -y podman podman-compose jq curl
|
||||
EOT
|
||||
}
|
||||
|
||||
resource "hcloud_server_network" "server1_net" {
|
||||
server_id = hcloud_server.server1.id
|
||||
network_id = hcloud_network.madbase_net.id
|
||||
ip = "10.0.1.1"
|
||||
}
|
||||
|
||||
resource "hcloud_server" "server2" {
|
||||
name = "madbase-server2"
|
||||
image = "debian-12"
|
||||
server_type = var.server_type
|
||||
location = var.location
|
||||
ssh_keys = [hcloud_ssh_key.default.id]
|
||||
placement_group_id = hcloud_placement_group.madbase_pg.id
|
||||
user_data = <<-EOT
|
||||
#cloud-config
|
||||
runcmd:
|
||||
- apt-get update
|
||||
- apt-get install -y podman podman-compose jq curl
|
||||
EOT
|
||||
}
|
||||
|
||||
resource "hcloud_server_network" "server2_net" {
|
||||
server_id = hcloud_server.server2.id
|
||||
network_id = hcloud_network.madbase_net.id
|
||||
ip = "10.0.1.2"
|
||||
}
|
||||
|
||||
resource "hcloud_server" "server3" {
|
||||
name = "madbase-server3"
|
||||
image = "debian-12"
|
||||
server_type = var.server_type
|
||||
location = var.location
|
||||
ssh_keys = [hcloud_ssh_key.default.id]
|
||||
placement_group_id = hcloud_placement_group.madbase_pg.id
|
||||
user_data = <<-EOT
|
||||
#cloud-config
|
||||
runcmd:
|
||||
- apt-get update
|
||||
- apt-get install -y podman podman-compose jq curl
|
||||
EOT
|
||||
}
|
||||
|
||||
resource "hcloud_server_network" "server3_net" {
|
||||
server_id = hcloud_server.server3.id
|
||||
network_id = hcloud_network.madbase_net.id
|
||||
ip = "10.0.1.3"
|
||||
}
|
||||
|
||||
resource "hcloud_server" "server4" {
|
||||
name = "madbase-server4"
|
||||
image = "debian-12"
|
||||
server_type = var.server_type
|
||||
location = var.location
|
||||
ssh_keys = [hcloud_ssh_key.default.id]
|
||||
placement_group_id = hcloud_placement_group.madbase_pg.id
|
||||
user_data = <<-EOT
|
||||
#cloud-config
|
||||
runcmd:
|
||||
- apt-get update
|
||||
- apt-get install -y podman podman-compose jq curl
|
||||
EOT
|
||||
}
|
||||
|
||||
resource "hcloud_server_network" "server4_net" {
|
||||
server_id = hcloud_server.server4.id
|
||||
network_id = hcloud_network.madbase_net.id
|
||||
ip = "10.0.1.4"
|
||||
}
|
||||
|
||||
output "server_ips" {
|
||||
value = {
|
||||
server1 = hcloud_server.server1.ipv4_address
|
||||
server2 = hcloud_server.server2.ipv4_address
|
||||
server3 = hcloud_server.server3.ipv4_address
|
||||
server4 = hcloud_server.server4.ipv4_address
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user