From 5140279bb4249a254d4d7a241530b756d16436a4 Mon Sep 17 00:00:00 2001 From: matiasbenary Date: Tue, 14 Apr 2026 16:54:18 -0300 Subject: [PATCH] docs: guide how to host ironclaw on google cloud (#2262) * feat: add google turorial * feat: update zh google tutorial * feat: update firewall rules * feat: update zh files --- docs/docs.json | 2 + .../infrastructure/google/google-ip.png | Bin 0 -> 150976 bytes .../infrastructure/google/google-ssh.png | Bin 0 -> 139739 bytes .../infrastructure/google/google-vm.png | Bin 0 -> 126803 bytes docs/infrastructure/google.mdx | 196 ++++++++++++++++++ docs/zh/infrastructure/google.mdx | 195 +++++++++++++++++ 6 files changed, 393 insertions(+) create mode 100644 docs/images/infrastructure/google/google-ip.png create mode 100644 docs/images/infrastructure/google/google-ssh.png create mode 100644 docs/images/infrastructure/google/google-vm.png create mode 100644 docs/infrastructure/google.mdx create mode 100644 docs/zh/infrastructure/google.mdx diff --git a/docs/docs.json b/docs/docs.json index ec751282ad..168d68d22f 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -136,6 +136,7 @@ "group": "How to host IronClaw on...", "pages": [ "infrastructure/droplet", + "infrastructure/google", "infrastructure/amazon" ] } @@ -264,6 +265,7 @@ "group": "在以下平台托管 IronClaw", "pages": [ "zh/infrastructure/droplet", + "zh/infrastructure/google", "zh/infrastructure/amazon" ] } diff --git a/docs/images/infrastructure/google/google-ip.png b/docs/images/infrastructure/google/google-ip.png new file mode 100644 index 0000000000000000000000000000000000000000..77fddea2f87ec36cffe833cf40445581e890cefa GIT binary patch literal 150976 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