{"id":159,"date":"2026-03-21T22:47:20","date_gmt":"2026-03-21T14:47:20","guid":{"rendered":"https:\/\/pa.yingzhi8.cn\/index.php\/2026\/03\/21\/install-gcp\/"},"modified":"2026-03-21T23:23:49","modified_gmt":"2026-03-21T15:23:49","slug":"install-gcp","status":"publish","type":"post","link":"https:\/\/pa.yingzhi8.cn\/index.php\/2026\/03\/21\/install-gcp\/","title":{"rendered":"GCP"},"content":{"rendered":"<h1>GCP<\/h1>\n<h1>&#22312; GCP Compute Engine &#19978;&#36816;&#34892; OpenClaw&#65288;Docker&#65292;&#29983;&#20135; VPS &#25351;&#21335;&#65289;<\/h1>\n<h2>&#30446;&#26631;<\/h2>\n<p>&#20351;&#29992; Docker &#22312; GCP Compute Engine VM &#19978;&#36816;&#34892;&#25345;&#20037;&#21270;&#30340; OpenClaw Gateway &#32593;&#20851;&#65292;&#20855;&#26377;&#25345;&#20037;&#29366;&#24577;&#12289;&#20869;&#32622;&#20108;&#36827;&#21046;&#25991;&#20214;&#21644;&#23433;&#20840;&#30340;&#37325;&#21551;&#34892;&#20026;&#12290;<\/p>\n<p>&#22914;&#26524;&#20320;&#24819;&#35201;&#8221;OpenClaw 24\/7 &#22823;&#32422; $5-12\/&#26376;&#8221;&#65292;&#36825;&#26159;&#22312; Google Cloud &#19978;&#30340;&#21487;&#38752;&#35774;&#32622;&#12290;<br \/>\n&#20215;&#26684;&#22240;&#26426;&#22120;&#31867;&#22411;&#21644;&#21306;&#22495;&#32780;&#24322;&#65307;&#36873;&#25321;&#36866;&#21512;&#20320;&#24037;&#20316;&#36127;&#36733;&#30340;&#26368;&#23567; VM&#65292;&#22914;&#26524;&#36935;&#21040; OOM &#21017;&#25193;&#23481;&#12290;<\/p>\n<h2>&#25105;&#20204;&#22312;&#20570;&#20160;&#20040;&#65288;&#31616;&#21333;&#35828;&#26126;&#65289;&#65311;<\/h2>\n<ul>\n<li>&#21019;&#24314; GCP &#39033;&#30446;&#24182;&#21551;&#29992;&#35745;&#36153;<\/li>\n<li>&#21019;&#24314; Compute Engine VM<\/li>\n<li>&#23433;&#35013; Docker&#65288;&#38548;&#31163;&#30340;&#24212;&#29992;&#36816;&#34892;&#26102;&#65289;<\/li>\n<li>&#22312; Docker &#20013;&#21551;&#21160; OpenClaw Gateway &#32593;&#20851;<\/li>\n<li>&#22312;&#20027;&#26426;&#19978;&#25345;&#20037;&#21270; <code>~\/.openclaw<\/code> + <code>~\/.openclaw\/workspace<\/code>&#65288;&#37325;&#21551;\/&#37325;&#24314;&#21518;&#20173;&#20445;&#30041;&#65289;<\/li>\n<li>&#36890;&#36807; SSH &#38567;&#36947;&#20174;&#20320;&#30340;&#31508;&#35760;&#26412;&#30005;&#33041;&#35775;&#38382;&#25511;&#21046; UI<\/li>\n<\/ul>\n<p>Gateway &#32593;&#20851;&#21487;&#20197;&#36890;&#36807;&#20197;&#19979;&#26041;&#24335;&#35775;&#38382;&#65306;<\/p>\n<ul>\n<li>&#20174;&#20320;&#30340;&#31508;&#35760;&#26412;&#30005;&#33041;&#36827;&#34892; SSH &#31471;&#21475;&#36716;&#21457;<\/li>\n<li>&#22914;&#26524;&#20320;&#33258;&#24049;&#31649;&#29702;&#38450;&#28779;&#22681;&#21644;&#20196;&#29260;&#65292;&#21487;&#20197;&#30452;&#25509;&#26292;&#38706;&#31471;&#21475;<\/li>\n<\/ul>\n<p>&#26412;&#25351;&#21335;&#20351;&#29992; GCP Compute Engine &#19978;&#30340; Debian&#12290;<br \/>\nUbuntu &#20063;&#21487;&#20197;&#65307;&#35831;&#30456;&#24212;&#22320;&#26144;&#23556;&#36719;&#20214;&#21253;&#12290;<br \/>\n&#26377;&#20851;&#36890;&#29992; Docker &#27969;&#31243;&#65292;&#35831;&#21442;&#38405; <a href=\"\/install\/docker\">Docker<\/a>&#12290;<\/p>\n<hr>\n<h2>&#24555;&#36895;&#36335;&#24452;&#65288;&#26377;&#32463;&#39564;&#30340;&#36816;&#32500;&#20154;&#21592;&#65289;<\/h2>\n<ol>\n<li>&#21019;&#24314; GCP &#39033;&#30446; + &#21551;&#29992; Compute Engine API<\/li>\n<li>&#21019;&#24314; Compute Engine VM&#65288;e2-small&#65292;Debian 12&#65292;20GB&#65289;<\/li>\n<li>SSH &#36827;&#20837; VM<\/li>\n<li>&#23433;&#35013; Docker<\/li>\n<li>&#20811;&#38534; OpenClaw &#20179;&#24211;<\/li>\n<li>&#21019;&#24314;&#25345;&#20037;&#21270;&#20027;&#26426;&#30446;&#24405;<\/li>\n<li>&#37197;&#32622; <code>.env<\/code> &#21644; <code>docker-compose.yml<\/code><\/li>\n<li>&#20869;&#32622;&#25152;&#38656;&#20108;&#36827;&#21046;&#25991;&#20214;&#12289;&#26500;&#24314;&#24182;&#21551;&#21160;<\/li>\n<\/ol>\n<hr>\n<h2>&#20320;&#38656;&#35201;&#20160;&#20040;<\/h2>\n<ul>\n<li>GCP &#36134;&#25143;&#65288;e2-micro &#31526;&#21512;&#20813;&#36153;&#23618;&#26465;&#20214;&#65289;<\/li>\n<li>&#24050;&#23433;&#35013; gcloud CLI&#65288;&#25110;&#20351;&#29992; Cloud Console&#65289;<\/li>\n<li>&#20174;&#20320;&#30340;&#31508;&#35760;&#26412;&#30005;&#33041; SSH &#35775;&#38382;<\/li>\n<li>&#23545; SSH + &#22797;&#21046;\/&#31896;&#36148;&#26377;&#22522;&#26412;&#20102;&#35299;<\/li>\n<li>&#32422; 20-30 &#20998;&#38047;<\/li>\n<li>Docker &#21644; Docker Compose<\/li>\n<li>&#27169;&#22411;&#35748;&#35777;&#20973;&#35777;<\/li>\n<li>&#21487;&#36873;&#30340;&#25552;&#20379;&#21830;&#20973;&#35777;<\/li>\n<li>WhatsApp QR<\/li>\n<li>Telegram bot token<\/li>\n<li>Gmail OAuth<\/li>\n<\/ul>\n<hr>\n<h2>1) &#23433;&#35013; gcloud CLI&#65288;&#25110;&#20351;&#29992; Console&#65289;<\/h2>\n<p><strong>&#36873;&#39033; A&#65306;gcloud CLI<\/strong>&#65288;&#25512;&#33616;&#29992;&#20110;&#33258;&#21160;&#21270;&#65289;<\/p>\n<p>&#20174; <a href=\"https:\/\/cloud.google.com\/sdk\/docs\/install\">https:\/\/cloud.google.com\/sdk\/docs\/install<\/a> &#23433;&#35013;<\/p>\n<p>&#21021;&#22987;&#21270;&#24182;&#35748;&#35777;&#65306;<\/p>\n<p>&#8220;`bash  theme={&#8220;theme&#8221;:{&#8220;light&#8221;:&#8221;min-light&#8221;,&#8221;dark&#8221;:&#8221;min-dark&#8221;}}<br \/>\ngcloud init<br \/>\ngcloud auth login<\/p>\n<pre><code>\n**&#36873;&#39033; B&#65306;Cloud Console**\n\n&#25152;&#26377;&#27493;&#39588;&#37117;&#21487;&#20197;&#36890;&#36807; [https:\/\/console.cloud.google.com](https:\/\/console.cloud.google.com) &#30340; Web UI &#23436;&#25104;\n\n***\n\n## 2) &#21019;&#24314; GCP &#39033;&#30446;\n\n**CLI&#65306;**\n\n```bash  theme={\"theme\":{\"light\":\"min-light\",\"dark\":\"min-dark\"}}\ngcloud projects create my-openclaw-project --name=\"OpenClaw Gateway\"\ngcloud config set project my-openclaw-project\n<\/code><\/pre>\n<p>&#22312; <a href=\"https:\/\/console.cloud.google.com\/billing\">https:\/\/console.cloud.google.com\/billing<\/a> &#21551;&#29992;&#35745;&#36153;&#65288;Compute Engine &#24517;&#38656;&#65289;&#12290;<\/p>\n<p>&#21551;&#29992; Compute Engine API&#65306;<\/p>\n<p>&#8220;`bash  theme={&#8220;theme&#8221;:{&#8220;light&#8221;:&#8221;min-light&#8221;,&#8221;dark&#8221;:&#8221;min-dark&#8221;}}<br \/>\ngcloud services enable compute.googleapis.com<\/p>\n<pre><code>\n**Console&#65306;**\n\n1. &#36716;&#21040; IAM &amp; Admin &gt; Create Project\n2. &#21629;&#21517;&#24182;&#21019;&#24314;\n3. &#20026;&#39033;&#30446;&#21551;&#29992;&#35745;&#36153;\n4. &#23548;&#33322;&#21040; APIs &amp; Services &gt; Enable APIs &gt; &#25628;&#32034; \"Compute Engine API\" &gt; Enable\n\n***\n\n## 3) &#21019;&#24314; VM\n\n**&#26426;&#22120;&#31867;&#22411;&#65306;**\n\n| &#31867;&#22411;       | &#37197;&#32622;                 | &#25104;&#26412;       | &#35828;&#26126;        |\n| -------- | ------------------ | -------- | --------- |\n| e2-small | 2 vCPU&#65292;2GB RAM     | ~$12\/&#26376; | &#25512;&#33616;        |\n| e2-micro | 2 vCPU&#65288;&#20849;&#20139;&#65289;&#65292;1GB RAM | &#31526;&#21512;&#20813;&#36153;&#23618;    | &#36127;&#36733;&#19979;&#21487;&#33021; OOM |\n\n**CLI&#65306;**\n\n```bash  theme={\"theme\":{\"light\":\"min-light\",\"dark\":\"min-dark\"}}\ngcloud compute instances create openclaw-gateway \n  --zone=us-central1-a \n  --machine-type=e2-small \n  --boot-disk-size=20GB \n  --image-family=debian-12 \n  --image-project=debian-cloud\n<\/code><\/pre>\n<p><strong>Console&#65306;<\/strong><\/p>\n<ol>\n<li>&#36716;&#21040; Compute Engine &gt; VM instances &gt; Create instance<\/li>\n<li>Name&#65306;<code>openclaw-gateway<\/code><\/li>\n<li>Region&#65306;<code>us-central1<\/code>&#65292;Zone&#65306;<code>us-central1-a<\/code><\/li>\n<li>Machine type&#65306;<code>e2-small<\/code><\/li>\n<li>Boot disk&#65306;Debian 12&#65292;20GB<\/li>\n<li>Create<\/li>\n<\/ol>\n<hr>\n<h2>4) SSH &#36827;&#20837; VM<\/h2>\n<p><strong>CLI&#65306;<\/strong><\/p>\n<p>&#8220;`bash  theme={&#8220;theme&#8221;:{&#8220;light&#8221;:&#8221;min-light&#8221;,&#8221;dark&#8221;:&#8221;min-dark&#8221;}}<br \/>\ngcloud compute ssh openclaw-gateway &#8211;zone=us-central1-a<\/p>\n<pre><code>\n**Console&#65306;**\n\n&#22312; Compute Engine &#20202;&#34920;&#26495;&#20013;&#28857;&#20987; VM &#26049;&#36793;&#30340;\"SSH\"&#25353;&#38062;&#12290;\n\n&#27880;&#24847;&#65306;VM &#21019;&#24314;&#21518; SSH &#23494;&#38053;&#20256;&#25773;&#21487;&#33021;&#38656;&#35201; 1-2 &#20998;&#38047;&#12290;&#22914;&#26524;&#36830;&#25509;&#34987;&#25298;&#32477;&#65292;&#35831;&#31561;&#24453;&#24182;&#37325;&#35797;&#12290;\n\n***\n\n## 5) &#23433;&#35013; Docker&#65288;&#22312; VM &#19978;&#65289;\n\n```bash  theme={\"theme\":{\"light\":\"min-light\",\"dark\":\"min-dark\"}}\nsudo apt-get update\nsudo apt-get install -y git curl ca-certificates\ncurl -fsSL https:\/\/get.docker.com | sudo sh\nsudo usermod -aG docker $USER\n<\/code><\/pre>\n<p>&#27880;&#38144;&#24182;&#37325;&#26032;&#30331;&#24405;&#20197;&#20351;&#32452;&#26356;&#25913;&#29983;&#25928;&#65306;<\/p>\n<p>&#8220;`bash  theme={&#8220;theme&#8221;:{&#8220;light&#8221;:&#8221;min-light&#8221;,&#8221;dark&#8221;:&#8221;min-dark&#8221;}}<br \/>\nexit<\/p>\n<pre><code>\n&#28982;&#21518;&#37325;&#26032; SSH &#30331;&#24405;&#65306;\n\n```bash  theme={\"theme\":{\"light\":\"min-light\",\"dark\":\"min-dark\"}}\ngcloud compute ssh openclaw-gateway --zone=us-central1-a\n<\/code><\/pre>\n<p>&#39564;&#35777;&#65306;<\/p>\n<p>&#8220;`bash  theme={&#8220;theme&#8221;:{&#8220;light&#8221;:&#8221;min-light&#8221;,&#8221;dark&#8221;:&#8221;min-dark&#8221;}}<br \/>\ndocker &#8211;version<br \/>\ndocker compose version<\/p>\n<pre><code>\n***\n\n## 6) &#20811;&#38534; OpenClaw &#20179;&#24211;\n\n```bash  theme={\"theme\":{\"light\":\"min-light\",\"dark\":\"min-dark\"}}\ngit clone https:\/\/github.com\/openclaw\/openclaw.git\ncd openclaw\n<\/code><\/pre>\n<p>&#26412;&#25351;&#21335;&#20551;&#35774;&#20320;&#23558;&#26500;&#24314;&#33258;&#23450;&#20041;&#38236;&#20687;&#20197;&#20445;&#35777;&#20108;&#36827;&#21046;&#25991;&#20214;&#25345;&#20037;&#21270;&#12290;<\/p>\n<hr>\n<h2>7) &#21019;&#24314;&#25345;&#20037;&#21270;&#20027;&#26426;&#30446;&#24405;<\/h2>\n<p>Docker &#23481;&#22120;&#26159;&#20020;&#26102;&#30340;&#12290;<br \/>\n&#25152;&#26377;&#38271;&#26399;&#29366;&#24577;&#24517;&#39035;&#23384;&#22312;&#20110;&#20027;&#26426;&#19978;&#12290;<\/p>\n<p>&#8220;`bash  theme={&#8220;theme&#8221;:{&#8220;light&#8221;:&#8221;min-light&#8221;,&#8221;dark&#8221;:&#8221;min-dark&#8221;}}<br \/>\nmkdir -p ~\/.openclaw<br \/>\nmkdir -p ~\/.openclaw\/workspace<\/p>\n<pre><code>\n***\n\n## 8) &#37197;&#32622;&#29615;&#22659;&#21464;&#37327;\n\n&#22312;&#20179;&#24211;&#26681;&#30446;&#24405;&#21019;&#24314; `.env`&#12290;\n\n```bash  theme={\"theme\":{\"light\":\"min-light\",\"dark\":\"min-dark\"}}\nOPENCLAW_IMAGE=openclaw:latest\nOPENCLAW_GATEWAY_TOKEN=change-me-now\nOPENCLAW_GATEWAY_BIND=lan\nOPENCLAW_GATEWAY_PORT=18789\n\nOPENCLAW_CONFIG_DIR=\/home\/$USER\/.openclaw\nOPENCLAW_WORKSPACE_DIR=\/home\/$USER\/.openclaw\/workspace\n\nGOG_KEYRING_PASSWORD=change-me-now\nXDG_CONFIG_HOME=\/home\/node\/.openclaw\n<\/code><\/pre>\n<p>&#29983;&#25104;&#24378;&#23494;&#38053;&#65306;<\/p>\n<p>&#8220;`bash  theme={&#8220;theme&#8221;:{&#8220;light&#8221;:&#8221;min-light&#8221;,&#8221;dark&#8221;:&#8221;min-dark&#8221;}}<br \/>\nopenssl rand -hex 32<\/p>\n<pre><code>\n**&#19981;&#35201;&#25552;&#20132;&#27492;&#25991;&#20214;&#12290;**\n\n***\n\n## 9) Docker Compose &#37197;&#32622;\n\n&#21019;&#24314;&#25110;&#26356;&#26032; `docker-compose.yml`&#12290;\n\n```yaml  theme={\"theme\":{\"light\":\"min-light\",\"dark\":\"min-dark\"}}\nservices:\n  openclaw-gateway:\n    image: ${OPENCLAW_IMAGE}\n    build: .\n    restart: unless-stopped\n    env_file:\n      - .env\n    environment:\n      - HOME=\/home\/node\n      - NODE_ENV=production\n      - TERM=xterm-256color\n      - OPENCLAW_GATEWAY_BIND=${OPENCLAW_GATEWAY_BIND}\n      - OPENCLAW_GATEWAY_PORT=${OPENCLAW_GATEWAY_PORT}\n      - OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN}\n      - GOG_KEYRING_PASSWORD=${GOG_KEYRING_PASSWORD}\n      - XDG_CONFIG_HOME=${XDG_CONFIG_HOME}\n      - PATH=\/home\/linuxbrew\/.linuxbrew\/bin:\/usr\/local\/sbin:\/usr\/local\/bin:\/usr\/sbin:\/usr\/bin:\/sbin:\/bin\n    volumes:\n      - ${OPENCLAW_CONFIG_DIR}:\/home\/node\/.openclaw\n      - ${OPENCLAW_WORKSPACE_DIR}:\/home\/node\/.openclaw\/workspace\n    ports:\n      # &#25512;&#33616;&#65306;&#22312; VM &#19978;&#20445;&#25345; Gateway &#32593;&#20851;&#20165;&#32465;&#23450; loopback&#65307;&#36890;&#36807; SSH &#38567;&#36947;&#35775;&#38382;&#12290;\n      # &#35201;&#20844;&#24320;&#26292;&#38706;&#65292;&#31227;&#38500; `127.0.0.1:` &#21069;&#32512;&#24182;&#30456;&#24212;&#37197;&#32622;&#38450;&#28779;&#22681;&#12290;\n      - \"127.0.0.1:${OPENCLAW_GATEWAY_PORT}:18789\"\n\n      # &#21487;&#36873;&#65306;&#20165;&#24403;&#20320;&#38024;&#23545;&#27492; VM &#36816;&#34892; iOS\/Android &#33410;&#28857;&#24182;&#38656;&#35201; Canvas &#20027;&#26426;&#26102;&#12290;\n      # &#22914;&#26524;&#20320;&#20844;&#24320;&#26292;&#38706;&#27492;&#31471;&#21475;&#65292;&#35831;&#38405;&#35835; \/gateway\/security &#24182;&#30456;&#24212;&#37197;&#32622;&#38450;&#28779;&#22681;&#12290;\n      # - \"18793:18793\"\n    command:\n      [\n        \"node\",\n        \"dist\/index.js\",\n        \"gateway\",\n        \"--bind\",\n        \"${OPENCLAW_GATEWAY_BIND}\",\n        \"--port\",\n        \"${OPENCLAW_GATEWAY_PORT}\",\n      ]\n<\/code><\/pre>\n<hr>\n<h2>10) &#23558;&#25152;&#38656;&#20108;&#36827;&#21046;&#25991;&#20214;&#20869;&#32622;&#21040;&#38236;&#20687;&#20013;&#65288;&#20851;&#38190;&#65289;<\/h2>\n<p>&#22312;&#36816;&#34892;&#20013;&#30340;&#23481;&#22120;&#20869;&#23433;&#35013;&#20108;&#36827;&#21046;&#25991;&#20214;&#26159;&#19968;&#20010;&#38519;&#38449;&#12290;<br \/>\n&#20219;&#20309;&#22312;&#36816;&#34892;&#26102;&#23433;&#35013;&#30340;&#20869;&#23481;&#22312;&#37325;&#21551;&#21518;&#37117;&#20250;&#20002;&#22833;&#12290;<\/p>\n<p>&#25152;&#26377; Skills &#25152;&#38656;&#30340;&#22806;&#37096;&#20108;&#36827;&#21046;&#25991;&#20214;&#24517;&#39035;&#22312;&#38236;&#20687;&#26500;&#24314;&#26102;&#23433;&#35013;&#12290;<\/p>\n<p>&#20197;&#19979;&#31034;&#20363;&#20165;&#26174;&#31034;&#19977;&#20010;&#24120;&#35265;&#30340;&#20108;&#36827;&#21046;&#25991;&#20214;&#65306;<\/p>\n<ul>\n<li><code>gog<\/code> &#29992;&#20110; Gmail &#35775;&#38382;<\/li>\n<li><code>goplaces<\/code> &#29992;&#20110; Google Places<\/li>\n<li><code>wacli<\/code> &#29992;&#20110; WhatsApp<\/li>\n<\/ul>\n<p>&#36825;&#20123;&#26159;&#31034;&#20363;&#65292;&#19981;&#26159;&#23436;&#25972;&#21015;&#34920;&#12290;<br \/>\n&#20320;&#21487;&#20197;&#20351;&#29992;&#30456;&#21516;&#30340;&#27169;&#24335;&#23433;&#35013;&#20219;&#24847;&#25968;&#37327;&#30340;&#20108;&#36827;&#21046;&#25991;&#20214;&#12290;<\/p>\n<p>&#22914;&#26524;&#20320;&#20197;&#21518;&#28155;&#21152;&#20381;&#36182;&#39069;&#22806;&#20108;&#36827;&#21046;&#25991;&#20214;&#30340;&#26032; Skills&#65292;&#20320;&#24517;&#39035;&#65306;<\/p>\n<ol>\n<li>&#26356;&#26032; Dockerfile<\/li>\n<li>&#37325;&#24314;&#38236;&#20687;<\/li>\n<li>&#37325;&#21551;&#23481;&#22120;<\/li>\n<\/ol>\n<p><strong>&#31034;&#20363; Dockerfile<\/strong><\/p>\n<p>&#8220;`dockerfile  theme={&#8220;theme&#8221;:{&#8220;light&#8221;:&#8221;min-light&#8221;,&#8221;dark&#8221;:&#8221;min-dark&#8221;}}<br \/>\nFROM node:22-bookworm<\/p>\n<p>RUN apt-get update &amp;&amp; apt-get install -y socat &amp;&amp; rm -rf \/var\/lib\/apt\/lists\/*<\/p>\n<h1>&#31034;&#20363;&#20108;&#36827;&#21046;&#25991;&#20214; 1&#65306;Gmail CLI<\/h1>\n<p>RUN curl -L https:\/\/github.com\/steipete\/gog\/releases\/latest\/download\/gog_Linux_x86_64.tar.gz<br \/>\n  | tar -xz -C \/usr\/local\/bin &amp;&amp; chmod +x \/usr\/local\/bin\/gog<\/p>\n<h1>&#31034;&#20363;&#20108;&#36827;&#21046;&#25991;&#20214; 2&#65306;Google Places CLI<\/h1>\n<p>RUN curl -L https:\/\/github.com\/steipete\/goplaces\/releases\/latest\/download\/goplaces_Linux_x86_64.tar.gz<br \/>\n  | tar -xz -C \/usr\/local\/bin &amp;&amp; chmod +x \/usr\/local\/bin\/goplaces<\/p>\n<h1>&#31034;&#20363;&#20108;&#36827;&#21046;&#25991;&#20214; 3&#65306;WhatsApp CLI<\/h1>\n<p>RUN curl -L https:\/\/github.com\/steipete\/wacli\/releases\/latest\/download\/wacli_Linux_x86_64.tar.gz<br \/>\n  | tar -xz -C \/usr\/local\/bin &amp;&amp; chmod +x \/usr\/local\/bin\/wacli<\/p>\n<h1>&#20351;&#29992;&#30456;&#21516;&#30340;&#27169;&#24335;&#22312;&#19979;&#38754;&#28155;&#21152;&#26356;&#22810;&#20108;&#36827;&#21046;&#25991;&#20214;<\/h1>\n<p>WORKDIR \/app<br \/>\nCOPY package.json pnpm-lock.yaml pnpm-workspace.yaml .npmrc .\/<br \/>\nCOPY ui\/package.json .\/ui\/package.json<br \/>\nCOPY scripts .\/scripts<\/p>\n<p>RUN corepack enable<br \/>\nRUN pnpm install &#8211;frozen-lockfile<\/p>\n<p>COPY . .<br \/>\nRUN pnpm build<br \/>\nRUN pnpm ui:install<br \/>\nRUN pnpm ui:build<\/p>\n<p>ENV NODE_ENV=production<\/p>\n<p>CMD [&#8220;node&#8221;,&#8221;dist\/index.js&#8221;]<\/p>\n<pre><code>\n***\n\n## 11) &#26500;&#24314;&#24182;&#21551;&#21160;\n\n```bash  theme={\"theme\":{\"light\":\"min-light\",\"dark\":\"min-dark\"}}\ndocker compose build\ndocker compose up -d openclaw-gateway\n<\/code><\/pre>\n<p>&#39564;&#35777;&#20108;&#36827;&#21046;&#25991;&#20214;&#65306;<\/p>\n<p>&#8220;`bash  theme={&#8220;theme&#8221;:{&#8220;light&#8221;:&#8221;min-light&#8221;,&#8221;dark&#8221;:&#8221;min-dark&#8221;}}<br \/>\ndocker compose exec openclaw-gateway which gog<br \/>\ndocker compose exec openclaw-gateway which goplaces<br \/>\ndocker compose exec openclaw-gateway which wacli<\/p>\n<pre><code>\n&#39044;&#26399;&#36755;&#20986;&#65306;\n\n<\/code><\/pre>\n<p>\/usr\/local\/bin\/gog<br \/>\n\/usr\/local\/bin\/goplaces<br \/>\n\/usr\/local\/bin\/wacli<\/p>\n<pre><code>\n***\n\n## 12) &#39564;&#35777; Gateway &#32593;&#20851;\n\n```bash  theme={\"theme\":{\"light\":\"min-light\",\"dark\":\"min-dark\"}}\ndocker compose logs -f openclaw-gateway\n<\/code><\/pre>\n<p>&#25104;&#21151;&#65306;<\/p>\n<pre><code>[gateway] listening on ws:\/\/0.0.0.0:18789\n<\/code><\/pre>\n<hr>\n<h2>13) &#20174;&#20320;&#30340;&#31508;&#35760;&#26412;&#30005;&#33041;&#35775;&#38382;<\/h2>\n<p>&#21019;&#24314; SSH &#38567;&#36947;&#20197;&#36716;&#21457; Gateway &#32593;&#20851;&#31471;&#21475;&#65306;<\/p>\n<p>&#8220;`bash  theme={&#8220;theme&#8221;:{&#8220;light&#8221;:&#8221;min-light&#8221;,&#8221;dark&#8221;:&#8221;min-dark&#8221;}}<br \/>\ngcloud compute ssh openclaw-gateway &#8211;zone=us-central1-a &#8212; -L 18789:127.0.0.1:18789<\/p>\n<pre><code>\n&#22312;&#27983;&#35272;&#22120;&#20013;&#25171;&#24320;&#65306;\n\n`http:\/\/127.0.0.1:18789\/`\n\n&#31896;&#36148;&#20320;&#30340; Gateway &#32593;&#20851;&#20196;&#29260;&#12290;\n\n***\n\n## &#20160;&#20040;&#25345;&#20037;&#21270;&#22312;&#21738;&#37324;&#65288;&#30495;&#23454;&#26469;&#28304;&#65289;\n\nOpenClaw &#22312; Docker &#20013;&#36816;&#34892;&#65292;&#20294; Docker &#19981;&#26159;&#30495;&#23454;&#26469;&#28304;&#12290;\n&#25152;&#26377;&#38271;&#26399;&#29366;&#24577;&#24517;&#39035;&#22312;&#37325;&#21551;&#12289;&#37325;&#24314;&#21644;&#37325;&#21551;&#21518;&#20173;&#28982;&#23384;&#22312;&#12290;\n\n| &#32452;&#20214;           | &#20301;&#32622;                                | &#25345;&#20037;&#21270;&#26426;&#21046;     | &#35828;&#26126;                        |\n| ------------ | --------------------------------- | --------- | ------------------------- |\n| Gateway &#32593;&#20851;&#37197;&#32622; | `\/home\/node\/.openclaw\/`           | &#20027;&#26426;&#21367;&#25346;&#36733;     | &#21253;&#25324; `openclaw.json`&#12289;&#20196;&#29260;     |\n| &#27169;&#22411;&#35748;&#35777;&#37197;&#32622;&#25991;&#20214;     | `\/home\/node\/.openclaw\/`           | &#20027;&#26426;&#21367;&#25346;&#36733;     | OAuth &#20196;&#29260;&#12289;API &#23494;&#38053;           |\n| Skill &#37197;&#32622;     | `\/home\/node\/.openclaw\/skills\/`    | &#20027;&#26426;&#21367;&#25346;&#36733;     | Skill &#32423;&#21035;&#29366;&#24577;                |\n| &#26234;&#33021;&#20307;&#24037;&#20316;&#21306;       | `\/home\/node\/.openclaw\/workspace\/` | &#20027;&#26426;&#21367;&#25346;&#36733;     | &#20195;&#30721;&#21644;&#26234;&#33021;&#20307;&#20135;&#29289;                  |\n| WhatsApp &#20250;&#35805;  | `\/home\/node\/.openclaw\/`           | &#20027;&#26426;&#21367;&#25346;&#36733;     | &#20445;&#30041; QR &#30331;&#24405;                  |\n| Gmail &#23494;&#38053;&#29615;    | `\/home\/node\/.openclaw\/`           | &#20027;&#26426;&#21367; + &#23494;&#30721;  | &#38656;&#35201; `GOG_KEYRING_PASSWORD` |\n| &#22806;&#37096;&#20108;&#36827;&#21046;&#25991;&#20214;      | `\/usr\/local\/bin\/`                 | Docker &#38236;&#20687; | &#24517;&#39035;&#22312;&#26500;&#24314;&#26102;&#20869;&#32622;                  |\n| Node &#36816;&#34892;&#26102;     | &#23481;&#22120;&#25991;&#20214;&#31995;&#32479;                            | Docker &#38236;&#20687; | &#27599;&#27425;&#38236;&#20687;&#26500;&#24314;&#26102;&#37325;&#24314;                 |\n| OS &#21253;         | &#23481;&#22120;&#25991;&#20214;&#31995;&#32479;                            | Docker &#38236;&#20687; | &#19981;&#35201;&#22312;&#36816;&#34892;&#26102;&#23433;&#35013;                  |\n| Docker &#23481;&#22120;    | &#20020;&#26102;                                | &#21487;&#37325;&#21551;       | &#21487;&#20197;&#23433;&#20840;&#38144;&#27585;                    |\n\n***\n\n## &#26356;&#26032;\n\n&#22312; VM &#19978;&#26356;&#26032; OpenClaw&#65306;\n\n```bash  theme={\"theme\":{\"light\":\"min-light\",\"dark\":\"min-dark\"}}\ncd ~\/openclaw\ngit pull\ndocker compose build\ndocker compose up -d\n<\/code><\/pre>\n<hr>\n<h2>&#25925;&#38556;&#25490;&#38500;<\/h2>\n<p><strong>SSH &#36830;&#25509;&#34987;&#25298;&#32477;<\/strong><\/p>\n<p>VM &#21019;&#24314;&#21518; SSH &#23494;&#38053;&#20256;&#25773;&#21487;&#33021;&#38656;&#35201; 1-2 &#20998;&#38047;&#12290;&#31561;&#24453;&#24182;&#37325;&#35797;&#12290;<\/p>\n<p><strong>OS Login &#38382;&#39064;<\/strong><\/p>\n<p>&#26816;&#26597;&#20320;&#30340; OS Login &#37197;&#32622;&#25991;&#20214;&#65306;<\/p>\n<p>&#8220;`bash  theme={&#8220;theme&#8221;:{&#8220;light&#8221;:&#8221;min-light&#8221;,&#8221;dark&#8221;:&#8221;min-dark&#8221;}}<br \/>\ngcloud compute os-login describe-profile<\/p>\n<pre><code>\n&#30830;&#20445;&#20320;&#30340;&#36134;&#25143;&#20855;&#26377;&#25152;&#38656;&#30340; IAM &#26435;&#38480;&#65288;Compute OS Login &#25110; Compute OS Admin Login&#65289;&#12290;\n\n**&#20869;&#23384;&#19981;&#36275;&#65288;OOM&#65289;**\n\n&#22914;&#26524;&#20351;&#29992; e2-micro &#24182;&#36935;&#21040; OOM&#65292;&#21319;&#32423;&#21040; e2-small &#25110; e2-medium&#65306;\n\n```bash  theme={\"theme\":{\"light\":\"min-light\",\"dark\":\"min-dark\"}}\n# &#39318;&#20808;&#20572;&#27490; VM\ngcloud compute instances stop openclaw-gateway --zone=us-central1-a\n\n# &#26356;&#25913;&#26426;&#22120;&#31867;&#22411;\ngcloud compute instances set-machine-type openclaw-gateway \n  --zone=us-central1-a \n  --machine-type=e2-small\n\n# &#21551;&#21160; VM\ngcloud compute instances start openclaw-gateway --zone=us-central1-a\n<\/code><\/pre>\n<hr>\n<h2>&#26381;&#21153;&#36134;&#25143;&#65288;&#23433;&#20840;&#26368;&#20339;&#23454;&#36341;&#65289;<\/h2>\n<p>&#23545;&#20110;&#20010;&#20154;&#20351;&#29992;&#65292;&#20320;&#30340;&#40664;&#35748;&#29992;&#25143;&#36134;&#25143;&#23601;&#21487;&#20197;&#12290;<\/p>\n<p>&#23545;&#20110;&#33258;&#21160;&#21270;&#25110; CI\/CD &#31649;&#36947;&#65292;&#21019;&#24314;&#20855;&#26377;&#26368;&#23567;&#26435;&#38480;&#30340;&#19987;&#29992;&#26381;&#21153;&#36134;&#25143;&#65306;<\/p>\n<ol>\n<li>&#21019;&#24314;&#26381;&#21153;&#36134;&#25143;&#65306;<\/li>\n<\/ol>\n<p><code>bash  theme={\"theme\":{\"light\":\"min-light\",\"dark\":\"min-dark\"}}<br \/>\n   gcloud iam service-accounts create openclaw-deploy<br \/>\n     --display-name=\"OpenClaw Deployment\"<\/code><\/p>\n<ol start=\"2\">\n<li>&#25480;&#20104; Compute Instance Admin &#35282;&#33394;&#65288;&#25110;&#26356;&#31364;&#30340;&#33258;&#23450;&#20041;&#35282;&#33394;&#65289;&#65306;<br \/>\n   <code>bash  theme={\"theme\":{\"light\":\"min-light\",\"dark\":\"min-dark\"}}<br \/>\n   gcloud projects add-iam-policy-binding my-openclaw-project<br \/>\n     --member=\"serviceAccount:openclaw-deploy@my-openclaw-project.iam.gserviceaccount.com\"<br \/>\n     --role=\"roles\/compute.instanceAdmin.v1\"<\/code><\/li>\n<\/ol>\n<p>&#36991;&#20813;&#20026;&#33258;&#21160;&#21270;&#20351;&#29992; Owner &#35282;&#33394;&#12290;&#20351;&#29992;&#26368;&#23567;&#26435;&#38480;&#21407;&#21017;&#12290;<\/p>\n<p>&#21442;&#38405; <a href=\"https:\/\/cloud.google.com\/iam\/docs\/understanding-roles\">https:\/\/cloud.google.com\/iam\/docs\/understanding-roles<\/a> &#20102;&#35299; IAM &#35282;&#33394;&#35814;&#24773;&#12290;<\/p>\n<hr>\n<h2>&#19979;&#19968;&#27493;<\/h2>\n<ul>\n<li>&#35774;&#32622;&#28040;&#24687;&#28192;&#36947;&#65306;<a href=\"\/channels\">&#28192;&#36947;<\/a><\/li>\n<li>&#23558;&#26412;&#22320;&#35774;&#22791;&#37197;&#23545;&#20026;&#33410;&#28857;&#65306;<a href=\"\/nodes\">&#33410;&#28857;<\/a><\/li>\n<li>&#37197;&#32622; Gateway &#32593;&#20851;&#65306;<a href=\"\/gateway\/configuration\">Gateway &#32593;&#20851;&#37197;&#32622;<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>GCP &#22312; GCP Compute Engine &#19978;&#36816;&#038;#34892 [&hellip;]<\/p>\n","protected":false},"author":0,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-159","post","type-post","status-publish","format-standard","hentry","category-docs"],"_links":{"self":[{"href":"https:\/\/pa.yingzhi8.cn\/index.php\/wp-json\/wp\/v2\/posts\/159","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pa.yingzhi8.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pa.yingzhi8.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/pa.yingzhi8.cn\/index.php\/wp-json\/wp\/v2\/comments?post=159"}],"version-history":[{"count":2,"href":"https:\/\/pa.yingzhi8.cn\/index.php\/wp-json\/wp\/v2\/posts\/159\/revisions"}],"predecessor-version":[{"id":794,"href":"https:\/\/pa.yingzhi8.cn\/index.php\/wp-json\/wp\/v2\/posts\/159\/revisions\/794"}],"wp:attachment":[{"href":"https:\/\/pa.yingzhi8.cn\/index.php\/wp-json\/wp\/v2\/media?parent=159"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pa.yingzhi8.cn\/index.php\/wp-json\/wp\/v2\/categories?post=159"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pa.yingzhi8.cn\/index.php\/wp-json\/wp\/v2\/tags?post=159"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}