Lazy loaded image
🌐小白也能搞定!手把手教你把 Flow2API 部署到 Google Cloud Platform
字数 3947阅读时长 10 分钟
2026-3-17
2026-3-19
type
Post
status
Published
date
Mar 19, 2026 03:14 PM
slug
flow2api-gcp-deployment
summary
本文基于实际部署经验,记录了将 Flow2API 项目部署到 GCP 的完整过程,包括踩过的坑和解决方案。即使你是零基础,跟着做也能成功。
tags
AIGC
感悟
AI绘图
Gemini
Nano Banana Pro
Flow
category
技术分享
icon
fas fa-tag
password
本文基于实际部署经验,记录了将 Flow2API 项目部署到 GCP 的完整过程,包括踩过的坑和解决方案。即使你是零基础,跟着做也能成功。

📋 目录

  1. 最终效果
  1. 前置准备
  1. 安装并配置 gcloud CLI
  1. 创建 GCP 项目
  1. 创建虚拟机(VM)
  1. 配置防火墙
  1. SSH 连接到 VM
  1. 安装 Docker 和 Git
  1. 拉取代码并构建镜像
  1. 配置并启动服务
  1. 配置域名和 HTTPS
  1. 绑定静态 IP
  1. 进阶:Host Agent 自动续签(推荐)
  1. 日常维护
  1. 费用说明
  1. 踩坑记录

最终效果

部署完成后的架构:
组件
配置
云服务商
Google Cloud Platform
虚拟机
Compute Engine e2-medium(2 vCPU / 4GB)
操作系统
Ubuntu 22.04 LTS
服务
Flow2API Docker 容器
反向代理
Nginx(80 → 8000)
HTTPS
Cloudflare Flexible SSL
验证码
YesCaptcha 第三方打码
最终通过 https://your-subdomain.yourdomain.com 访问服务,管理后台和 API 一切正常。

前置准备

在开始之前,你需要准备:
  • Google 账号 — 用于访问 GCP
  • 信用卡/借记卡 — GCP 需要绑定支付方式(新用户有 $300 免费额度)
  • 一个域名(可选)— 推荐在 Cloudflare 托管
  • YesCaptcha 账号 — 注册 [YesCaptcha]() 并充值(10 元即可)
    • https://yescaptcha.com/i/13Xd8K

第一步:安装并配置 gcloud CLI

下载安装

前往 Google Cloud SDK 安装页面 下载安装包。
> ⚠️ Windows 用户注意:如果安装在非默认路径,需要手动将 `bin` 目录添加到系统 PATH。

初始化登录

按提示操作:
  1. 浏览器会自动打开,登录你的 Google 账号
  1. 选择或创建项目
  1. 选择默认区域(后面会详细说明)

第二步:创建 GCP 项目

在网页端创建

  1. 打开 GCP 控制台
  1. 顶部项目下拉菜单 → 新建项目
  1. 填写项目名称,记下项目 ID

设置默认区域

  1. 进入 Compute Engine 设置
  1. 首次打开会提示启用 Compute Engine API,点击启用
  1. 设置默认区域和地区
区域选择建议
区域
位置
适合场景
us-central1
🇺🇸 美国中部
价格最便宜
asia-east1
🇹🇼 台湾
亚洲用户延迟最低
asia-northeast1
🇯🇵 东京
亚洲备选

在 CLI 中切换项目


第三步:创建虚拟机

参数说明
参数
说明
e2-medium
2 vCPU + 4GB 内存,够用且经济
30GB
磁盘空间,Docker 镜像较大需要充足空间
ubuntu-2204-lts
Ubuntu 22.04,Docker/Git 安装方便
flow2api-server
网络标签,用于防火墙规则
💡 显示 Disk size: '30 GB' is larger than image size: '10 GB' 的警告可以忽略,Ubuntu 会自动扩展分区。
创建成功后,记下输出的 EXTERNAL_IP

第四步:配置防火墙

⚠️ 0.0.0.0/0 表示允许所有 IP 访问。生产环境建议限制来源 IP。

第五步:SSH 连接到 VM

  • 首次连接会自动创建 SSH 密钥
  • Windows 系统会自动打开 PuTTY 窗口
  • 看到 用户名@flow2api-vm:~$ 就表示连接成功了
💡 后续也可以通过 GCP 控制台的网页 SSH 连接,手机浏览器也能操作!

第六步:安装 Docker 和 Git

以下命令均在 VM 的 SSH 会话中执行:

第七步:拉取代码并构建镜像

⚠️ 构建过程中看到 A new release of pip is available 提示可以忽略,这是容器内部的提示,不影响使用。
为什么在 VM 上构建而不是本地?
直接在 VM 上 git clone + docker build 的好处:
  1. 不依赖本地 Docker,也不受国内网络限制
  1. 以后更新只需 git pull + 重新构建
  1. 手机上也能 SSH 进来操作

第八步:配置并启动服务

创建数据目录

创建配置文件

需要修改的关键配置
修改完毕后,Ctrl+O 保存,Ctrl+X 退出。
> ⚠️ 踩坑提醒:如果自定义密码导致登录失败,可以先将 `admin_username` 和 `admin_password` 都设为 `"admin"`,删除数据库文件后重启:

启动容器

验证

浏览器访问 http://你的VM外部IP:8000 应该可以看到管理后台。

第九步:配置域名和 HTTPS

如果你没有域名,可以跳过此步,直接用 http://IP:8000 访问。

安装 Nginx 反向代理(在 VM 上执行)

记得将 your-subdomain.yourdomain.com 替换为你的实际域名!

配置 Cloudflare

  1. 登录 Cloudflare Dashboard
  1. 选择你的域名 → DNSAdd Record
  1. 添加 A 记录:
字段
Type
A
Name
你的二级域名(如 api
IPv4
你的 VM 外部 IP
Proxy status
橙色云朵(Proxied)
  1. 左侧 SSL/TLSOverview → 加密模式选 Flexible
等待 1-2 分钟 DNS 生效,访问 https://your-subdomain.yourdomain.com 即可看到 HTTPS 小锁 🔒

第十步:绑定静态 IP

VM 默认分配的是临时 IP,停止再启动后 IP 会变,需要重新修改 DNS。绑定静态 IP 可以一劳永逸。
⚠️ 注意 --access-config-name 的值是 external-nat(小写带连字符),不是 External NAT
查看新 IP:
最后去 Cloudflare 将 A 记录更新为新的静态 IP。此后无论怎么停启 VM,IP 都不会变了。

进阶:Host Agent 自动续签与无头打码(推荐)

如果你不想一直消耗第三方打码(如 YesCaptcha)的额度,并且希望 Session Token 过期后能自动刷新,可以部署官方的 flow2api-host-agent
该服务直接运行在 VM 宿主机上,通过 noVNC 提供桌面上的 Chrome 浏览器用于打码,并负责自动向你的 flow2api 实例提交新 Token。
> ⚠️ 前提
flow2api 容器必须改用 Dockerfile.headed 构建。setting.toml 中的 captcha_method 必须改为 "browser"。VM 的内存建议保持在 e2-medium (4GB) 或以上,因为要运行双 Chrome。

1. 重新部署 flow2api 容器版本

2. 宿主机安装系统级依赖

> 坑 1: Ubuntu 22.04 默认的 chromium-browser 是 snap 包,无法被 systemd 后台服务正常调用。必须安装原版 Google Chrome!

3. 克隆并安装 Host Agent

4. 修复系统服务配置(极度避坑)

> 坑 2 和坑 3:
脚本默认指定的浏览器是 chromium,我们需要改为刚才安装的 google-chrome-stable。
同时,noVNC 缺少宿主机与网页之间的画面桥接,我们需要手动配置 x11vnc。
修改浏览器服务:
创建 x11vnc 数据桥接服务(不要用 -bg 参数,否则 systemd 会将其误判为退出):
创建虚拟显示器(Xvfb + Fluxbox)的守护服务:
重载并启动一切!
最后,运行 noVNC 的 Web Socket(此步使用 websockify 在后台桥接 6080 和 5900 端口):

5. 开放 GCP 防火墙新端口

在你的本地计算机 PowerShell 执行:

6. 配置 Host Agent 参数

回到 SSH,编辑配置:
最关键参数如下填写:
完成后重启服务:

7. 首次登录与开启持续刷新

  1. 浏览器打开 http://你的VM外部IP:38110/login
  1. 你应该能看到右侧出现了一个模拟的桌面,里面运行着 Google Chrome。
  1. 在这个 Chrome 中操作,完成 Google Labs 的账号登录(有任何图片验证或者风控手机验证,都在这里手动解决)。
  1. 确保最终界面停留在了正常的 Google Labs 页面,且帐号头像已显示。
  1. 点击页面左上角面板里的 “立即刷新 Token”。如果右上角飘出绿色的成功提示,则打通了任督二脉!
  1. 回到 SSH,启动自动续期服务:
至此,恭喜你拥有了一个 7x24 小时全自动续签、自己给自己过无头打码的完美系统。

日常维护

更新代码并重新部署

查看日志

手机管理 VM

两种方式:
  1. Google Cloud App:[Android](https://play.google.com/store/apps/details?id=com.google.android.apps.cloudconsole) / [iOS](https://apps.apple.com/app/google-cloud-console/id1005120814),一键启停 VM
  1. 手机浏览器:打开 [console.cloud.google.com/compute](https://console.cloud.google.com/compute),勾选 VM → 启动/停止
💡 由于设了 --restart unless-stopped,VM 启动后容器会自动运行,不需要手动操作。

费用说明

资源
月费估算
Compute Engine (e2-medium)
~$25
磁盘 (30GB)
~$3
静态 IP(使用中)
免费
静态 IP(VM 停止时未使用)
~$7
Cloudflare
免费
| 常开合计 | ~$28/月 |
> 💡 GCP 新用户有 $300 免费额度(90 天有效期),足够运行大约 10 个月。

省钱建议

  • 服务不是 24/7 需要的话,不用时停止 VM,只收磁盘费 $3/月
  • 每次 VM 启动会触发一次验证码打码,消耗 YesCaptcha 额度。如果使用频繁,建议让 VM 常驻运行
  • `e2-medium`(4GB 内存)对于标准模式(非有头浏览器)完全够用

踩坑记录

问题
原因
解决方案
gcloud 命令找不到
安装在自定义路径,未加入 PATH
手动添加 bin 目录到系统 PATH
本地 docker build 无法拉取基础镜像
国内网络无法连接 Docker Hub
改为在 GCP VM 上直接构建
创建仓库报 ALREADY_EXISTS
仓库已经存在
不是错误,可以忽略
自定义密码后登录失败
密码特殊字符导致 TOML 解析异常
重置为默认密码 + 删除 db 文件
浏览器显示「不安全」
直接用 IP:8000 无 HTTPS
Nginx 反向代理 + Cloudflare SSL
delete-access-config 报错
access config 名称是 external-nat 而非 External NAT
使用正确的小写名称
部署 Host Agent:浏览器启动退出码为 1
Ubuntu 22.04 apt 安装的 chromium 实际上是 snap 沙盒包,systemd 无法调用它
直接增加源,apt-get 原版的 google-chrome-stable,并修改服务配置。
部署 Host Agent:Web UI 中远程桌面无限转圈
没有安装且配置 x11vnc 数据流
独立创建一个 x11vnc 的 systemd 伴生服务,抛接给 websockify 的 5900 端口。
部署 Host Agent:x11vnc 服务启动即停止
服务文件中带入了 -bg 参数,导致应用挂到后台引起 systemd 误判为进程死亡
使用 Type=simple 服务时去除一切 -bg 及 daemon 化自运行参数。
部署 Host Agent:x11vnc 报错 BadAccess
x11vnc 请求捕获共享内存权限不足
启动参数加上 -noxdamage-noshm 关闭共享内存与损害轮训。

打码方式对比

方式
需要 Dockerfile.headed
说明
yescaptcha
第三方打码服务,推荐
capmonster
第三方打码,YesCaptcha 替代
ezcaptcha
第三方打码
capsolver
第三方打码
browser
容器内有头浏览器打码
personal
有头浏览器 + 自动刷新 ST
remote_browser
连接远程有头打码服务器
使用标准 Dockerfile 部署时,只能选择不需要 Dockerfile.headed 的打码方式。

总结

整个部署流程核心就是:
  1. GCP 创建 VM — 一条命令搞定
  1. VM 里装 Docker — apt-get 一键安装
  1. Git 拉代码 + Docker Build — 云端构建,不依赖本地网络
  1. 配置文件 + Docker Run — 服务跑起来
  1. Nginx + Cloudflare — HTTPS 加持
  1. 静态 IP — 一劳永逸
整个过程大约 30 分钟可以完成。以后更新代码只需要 git pull + 重新构建,手机上也能操作。
如果这篇文章对你有帮助,欢迎点赞收藏 ⭐
 
上一篇
重新开始更新博客
下一篇
新NotionNext博客开篇-AIGC是未来

评论
Loading...