Run a Hubble on GCP
Intro
This is a step-by-step guide to setting up Hubble on GCP. It usually takes less than 30 minutes to complete the whole process.
Requirements
Costs
- GCP setup recommended in this tutorial may cost up to $70/month
- Alchemy usage should stay within the free tier
Create GCP VM
Open Google Cloud Shell and execute following commands:
Execute below commands in the cloud shell:
mkdir farcaster-hub
cd farcaster-hub
nano main.tf
Now paste the content of below into your main.tf
This is the configuration of your GCP virtual machine that will be created.
provider "google" {
project = "$YOUR_PROJECT_ID"
region = "us-central1"
}
resource "google_compute_instance" "farcaster-hub-vm" {
name = "farcaster-hub-vm"
machine_type = "e2-standard-4" # 4 vCPUs, 16 GB memory
zone = "us-central1-a" # Specify the zone here
boot_disk {
initialize_params {
image = "ubuntu-2004-focal-v20231213" # Ubuntu 20.04 LTS image URL
size = 60 # 60 GB disk size
}
}
network_interface {
network = "default"
access_config {
// This will assign a public IP address to the instance
}
}
tags = ["allow-farcaster-p2p-ports"] # For firewall rule
metadata = {
# You can add any additional metadata here if needed
}
}
resource "google_compute_firewall" "farcaster-p2p-ports" {
name = "farcaster-p2p-ports"
network = "default"
# allow incoming traffic for ports 2282-2285
allow {
protocol = "tcp"
ports = ["2282-2285"]
}
source_ranges = ["0.0.0.0/0"]
}
Execute this command:
terraform init # to initialize terraform in your farcaster-hub folder
Execute this command:
terraform plan # this will simulate your terraform configuration & check if it is correct
Example output:
Now execute this command:
terraform apply
It will take a few minutes before the VM is created. Time to enjoy your ☕
Now you should be able to connect to your VM by clicking on the SSH button.
Now Install Docker as described here https://docs.docker.com/engine/install/ubuntu/
Now follow the steps as described on Install page page
Your Hubble is up and running when you see below :white_check_mark: