零成本!手把手教你“薅秃”谷歌云,白嫖永久免费 WebDAV 服务
序言
首先,理解Google Cloud 免费服务器流量消耗对于保持在免费层内至关重要。
- 入站流量免费:
- 当您通过 WebDAV 客户端上传文件到 Google Drive 时,数据从您的客户端传输到 Google Cloud VM 实例。这部分属于入站流量,GCP 不对其收费。
- VM 到 Google Drive 的流量免费 (通常是 Google 内部网络):
- 当 Rclone 将文件从 VM 实例的缓存实际写入到您的 Google Drive 时,这个过程通常发生在 Google 的内部网络中,一般不消耗您的外部流量配额。
- 出站流量有限但可控:
- 下载文件: 当您通过 WebDAV 客户端下载文件时,数据从 Google Cloud VM 实例传输到您的客户端。这部分属于出站流量,会计入您每月 1GB/200GB 的免费出站流量配额 (取决于目标区域)。
- 浏览目录: 当您浏览 WebDAV 目录时,客户端只请求文件和文件夹列表(元数据),这些数据量非常小,因此产生的出站流量也极低。
- 流媒体播放: 如果您直接通过 WebDAV 播放视频或音乐,那么消耗的流量就是该媒体文件的大小,会计入出站流量。
只要您合理使用,例如不是作为大流量的公共下载服务器,每月 1GB/200GB 的免费出站流量对于个人 WebDAV 使用 (文件同步、备份、偶尔的远程访问) 通常是足够的。我个人主要用于1panel定时备份服务器
实现步骤
准备工作:
- 一个 Google 账户 (Gmail 账户即可)。
- 一张信用卡或借记卡 (仅用于身份验证,免费层资源不会扣费)。
- 一点点耐心和探索精神!
第一部分:申请 Google Cloud 免费服务器
Google Cloud Platform (GCP) 提供了一个“永久免费层”,允许用户在特定限制下免费使用其部分云服务。
官网地址:https://cloud.google.com/
步骤:
注册 Google Cloud 账户:
- 访问 Google Cloud 官网。
- 点击“免费开始使用” (Get started for free) 或类似按钮。
- 使用您的 Google 账户登录,如果提示,请创建一个新的结算账号。
- 按照指引输入您的国家/地区、简要描述您的需求,并同意服务条款。
- 您需要提供支付方式(如信用卡)用于身份验证,请放心,只要您只使用免费层级的资源,就不会被收取费用。
了解免费层与免费试用:
- 新用户通常会获得一个为期 90 天的免费试用期,并赠送 $300 体验赠金。这些赠金可以用来体验 GCP 的各种付费服务。
- 重要的是,即使 90 天试用期结束或者 $300 赠金用完,您仍然可以继续使用“永久免费层”中包含的资源。我们的目标就是利用这部分资源。
创建免费的虚拟机 (VM) 实例:
- 登录到 Google Cloud 控制台。
- 在左上角的导航菜单 (汉堡菜单 ☰) 中,找到并选择 Compute Engine > VM 实例。
点击“创建实例”。
配置实例:
- 名称: 给您的实例取一个容易记的名字,例如
my-free-webdav-server
。 - 区域 (Region): 务必选择支持免费层的区域! 例如:
us-west1
(俄勒冈)us-central1
(爱荷华)us-east1
(南卡罗来纳)
(截至 2024 年,这些区域通常提供免费层实例,具体请参考 GCP 免费层官方文档)
- 可用区 (Zone): 在选定区域内任选一个即可。
- 机器系列 (Machine family): 选择 E2。
- 机器类型 (Machine type): 选择
e2-micro
(2 个 vCPU,1 GB 内存)。这是当前主要的免费层实例类型。(旧的f1-micro
可能仍在某些文档中提及,但e2-micro
是目前推荐的免费实例)
引导磁盘 (Boot disk):
- 点击“更改”。
- 操作系统: 选择一个您熟悉的 Linux 发行版,例如 Ubuntu (推荐选择一个 LTS 版本,如 Ubuntu 20.04 LTS 或 22.04 LTS)。
- 版本: 默认即可。
- 引导磁盘类型: 选择 标准永久性磁盘。
- 大小: 免费层提供每月 30GB 的标准永久性磁盘 (所有实例共享此额度,如果只有一个实例,则此实例可用 30GB)。
- 点击“选择”。
数据保护: 关闭快照功能,避免扣费!
- 防火墙: 勾选“允许 HTTP 流量”和“允许 HTTPS 流量”。虽然我们 WebDAV 可能用自定义端口,但勾选这些方便初始测试,后续我们会专门为 WebDAV 配置端口。
- 点击网络,然后下拉,修改网络服务器为标准!
- 检查右侧的“每月估算费用”,它应该会显示这是免费层级的一部分。
- 名称: 给您的实例取一个容易记的名字,例如
点击“创建”并等待实例启动。
注意事项 (非常重要!):
- 区域限制: 再次强调,只有特定区域的
e2-micro
(或旧的f1-micro
) 实例才在免费层范围内。 - 机器类型: 确保选择的是
e2-micro
。其他类型会产生费用。 - 磁盘: 免费层提供 30GB 标准永久磁盘。超出部分或使用 SSD 磁盘会收费。
- 流量:
- 出站流量 (从 GCP 到互联网): 每月提供 1GB 免费出站流量到中国大陆地区 (不含香港),200GB 免费出站流量到澳大利亚地区,以及 200GB 免费出站流量到全球其他地区 (不含中国和澳大利亚)。(流量政策可能变化,请参考 GCP 网络价格文档)
- 入站流量 (从互联网到 GCP):完全免费!
- IP 地址: 实例运行时,其临时外部 IP 地址是免费的。如果您需要静态 IP 地址,或者实例停止但 IP 仍保留,可能会产生少量费用。对于我们的应用,临时 IP 即可。
- 监控: 养成定期在 GCP 控制台的“结算”部分检查费用和用量的好习惯,确保没有超出免费配额导致意外收费。最终费用应该为0!
第二部分:在服务器上安装和配置 Rclone
Rclone 是一个功能强大的命令行工具,用于管理云存储。我们将用它来连接 Google Drive。
Rclone 官网: https://rclone.org/
连接到您的 VM 实例:
- 在 VM 实例列表中,找到您创建的实例,点击其对应的“SSH”按钮。这会在浏览器中打开一个 SSH 终端窗口。
更新系统 (推荐):
在 SSH 终端中,运行以下命令更新软件包列表和已安装的软件包:sudo apt update
sudo apt upgrade -y安装 Rclone:
运行以下官方推荐的安装脚本:sudo -v ; curl https://rclone.org/install.sh | sudo bash
安装完成后,可以通过
rclone version
检查是否成功。配置 Rclone 连接到 Google Drive:
在 SSH 终端中输入:
rclone config
开始配置:
n)
New remotename>
输入一个远程存储的名称,例如MyGoogleDrive
(后续命令会用到这个名字)。Storage>
寻找到drive
(Google Drive) 对应的数字并输入,然后按 Enter。client_id>
直接按 Enter (留空,替换自己的效果更佳!可以谷歌搜索一下)。client_secret>
直接按 Enter (留空,替换自己的效果更佳!可以谷歌搜索一下)。scope>
选择1
(Full access all files, excluding Application Data Folder)。root_folder_id>
直接按 Enter (留空,表示整个 Drive)。如果只想挂载特定文件夹,可以填入该文件夹的 ID。service_account_file>
直接按 Enter (留空)。Edit advanced config?
输入n
(No),然后按 Enter。Use auto config?
输入n
(No),然后按 Enter。(这一步由于服务器没有桌面,所以选n)
- 复制上一步命令行输出的代码,在本地下载一个rclone,然后打开命令行执行,访问网页授权账号
- 获取到token,然后复制粘贴到服务器上!
Configure this as a team drive?
如果您用的是个人 Drive,输入n
(No)。如果是团队盘,则输入y
并按照提示操作。y/e/d/r/c/q>
输入y
(Yes this is OK) 保存配置。q)
Quit config。
创建挂载点和缓存目录:
我们需要在服务器上创建目录,用于挂载 Google Drive 和存放缓存文件。sudo mkdir -p /wangwang/google
sudo mkdir -p /wangwang/webcache这里的
/wangwang/google
是 Google Drive 的挂载点,/wangwang/webcache
是 Rclone VFS 缓存的存放位置。您可以根据喜好更改路径,但请确保后续命令中的路径一致。挂载 Google Drive (测试性挂载,非后台运行):
为了确保配置正确,可以先尝试在前台挂载:rclone mount MyGoogleDrive: /wangwang/google --allow-other --allow-non-empty --vfs-cache-mode writes
MyGoogleDrive:
替换为您在rclone config
中设置的远程存储名称。/wangwang/google
是您创建的本地挂载目录。--allow-other
:允许非 root 用户访问挂载点。--allow-non-empty
:允许挂载到非空目录(尽管我们刚创建的目录是空的)。--vfs-cache-mode writes
:写入时使用缓存,可以提高小文件写入性能。
打开新的 SSH 窗口 (不要关闭当前的),然后尝试访问挂载点:
ls /wangwang/google
如果您能看到 Google Drive 里的文件和文件夹,说明挂载成功!
回到第一个 SSH 窗口,按Ctrl+C
停止前台挂载。后台挂载使用下面命令!rclone mount MyGoogleDrive: /wangwang/google --allow-other --allow-non-empty --vfs-cache-mode writes --daemon
第三部分:使用 Rclone 启动 WebDAV 服务并后台运行
现在我们将配置 Rclone 以 WebDAV 方式提供服务,并让它在后台持续运行。
启动 WebDAV 服务的命令:
nohup rclone serve webdav MyGoogleDrive: --addr :8080 --vfs-cache-mode full --cache-dir /wangwang/webcache --vfs-cache-max-size 20G --vfs-cache-max-age 5m --vfs-cache-poll-interval 30s --user aaaa --pass bbbb --daemon > /wangwang/rclone-webdav.log 2>&1 &
命令详解:
nohup ... &
:nohup
使命令在您退出 SSH 后继续运行,&
使命令在后台运行。rclone serve webdav MyGoogleDrive:
:MyGoogleDrive:
:您配置的 Google Drive 远程存储名称。您也可以指定一个子目录,例如MyGoogleDrive:MyFolder/SubFolder
,那么 WebDAV 服务将只提供这个子目录的内容。
--addr :8080
:WebDAV 服务监听的 IP 地址和端口。:8080
表示监听本机所有 IP 地址的 8080 端口。您可以更改为其他未被占用的端口,例如:5005
。--vfs-cache-mode full
:启用完整的 VFS 缓存模式。 这意味着 Rclone 会在本地磁盘(由--cache-dir
指定)缓存文件的结构和内容。这对于频繁访问的文件能显著提高性能并减少对 Google Drive API 的直接请求。--cache-dir /wangwang/webcache
:指定 VFS 缓存的存储目录(我们之前创建的)。--vfs-cache-max-size 20G
:设置 VFS 缓存的最大容量为 20GB。请确保这个值小于您服务器的可用磁盘空间,并考虑免费层 30GB 磁盘的总限制。--vfs-cache-max-age 5m
:缓存中的文件在未被访问 5 分钟后被视为过期,可能会被清理以腾出空间。--vfs-cache-poll-interval 30s
:每 30 秒检查远程 Google Drive 是否有变化,以更新缓存。--user aaaa --pass bbbb
:设置 WebDAV 服务的用户名和密码。请务必将aaaa
和bbbb
替换为您自己的强密码! 这是保护您数据安全的关键。--daemon
:让 rclone mount 命令本身作为守护进程在后台运行(对于serve webdav
,配合nohup
和&
可以确保其稳定后台运行)。> /wangwang/rclone-webdav.log 2>&1
:将标准输出和错误输出都重定向到/wangwang/rclone-webdav.log
文件中,方便排查问题。
运行上述命令后,Rclone WebDAV 服务就会在后台启动。
您可以通过以下命令查看日志:tail -f /wangwang/rclone-webdav.log 按 `Ctrl+C` 退出日志查看。
第四部分:配置 GCP 防火墙允许 WebDAV 端口
为了能从外部访问您搭建的 WebDAV 服务,需要在 GCP 的防火墙中允许您设置的端口(例如 8080)。
在 Google Cloud 控制台,导航到 VPC 网络 > 防火墙。
点击顶部的“创建防火墙规则”。
配置规则:
- 名称: 例如
allow-webdav-8080
。 - 网络: 通常是
default
。 - 优先级:
1000
(默认即可)。 - 流量方向: 入站 (Ingress)。
- 对匹配项执行的操作: 允许 (Allow)。
- 目标:
- 选择“网络中的所有实例”(如果这是您唯一的项目或测试)。
- 或者,更安全的方式是选择“指定的目标标记”,然后在“目标标记”中输入一个自定义标记,例如
webdav-server
。之后,您需要回到 VM 实例的编辑页面,在“网络标记”中添加这个webdav-server
标记。
- 来源过滤条件:
- 来源 IPv4 地址范围: 输入
0.0.0.0/0
(表示允许来自任何 IP 地址的访问)。如果您知道自己客户端的固定 IP 地址,为了安全,可以只填写您的 IP 地址。
- 来源 IPv4 地址范围: 输入
- 协议和端口:
- 选择“指定的协议和端口”。
- 勾选
tcp
,并在下方的框中输入您为 WebDAV 服务设置的端口号,例如8080
(如果您用了其他端口,请修改)。
- 名称: 例如
点击“创建”。防火墙规则可能需要几十秒到几分钟生效。
第五部分:访问您的 WebDAV 服务
获取服务器的外部 IP 地址:
- 回到 Compute Engine > VM 实例 页面。
- 在实例列表中,您会看到一个“外部 IP”地址。复制这个地址。
使用 WebDAV 客户端连接:
您可以使用各种支持 WebDAV 协议的客户端软件来连接您的服务。- 连接地址:
http://<您的服务器外部IP地址>:<您设置的端口号>
例如:http://34.123.45.67:8080
- 用户名: 您在 Rclone 命令中设置的
--user
(例如aaaa
)。 - 密码: 您在 Rclone 命令中设置的
--pass
(例如bbbb
)。
- 连接地址:
至此,教程就完结了,你可以在需要同步或者备份的地方使用这个webdav了!
重要提示和最佳实践:
- 监控!监控!监控! 定期访问 Google Cloud 控制台的“结算” > “报告”和“费用表”页面,密切关注您的资源使用情况和潜在费用。设置预算提醒也是个好主意。
- 安全性:
- 使用非常强大的 WebDAV 用户名和密码。
- 考虑将防火墙规则中的“来源 IPv4 地址范围”设置为您常用的 IP 地址或 IP 段,而不是
0.0.0.0/0
,以增强安全性。 - 定期更新您的 VM 系统 (
sudo apt update && sudo apt upgrade -y
) 和 Rclone (sudo -v ; curl https://rclone.org/install.sh | sudo bash
会自动更新到最新版)。
- Rclone 文档: Rclone 功能非常强大,查阅Rclone 官方文档可以发掘更多高级用法。
- 了解
e2-micro
限制:e2-micro
实例的 CPU 和内存资源有限,不适合高并发或计算密集型任务。但对于个人 WebDAV 服务来说是足够的。 - 停止服务: 如果您想停止 WebDAV 服务,可以通过 SSH 连接到服务器,然后使用
ps aux | grep rclone
找到 Rclone 进程的 PID,再用sudo kill <PID>
来结束它。 - 删除实例: 如果不再需要,记得在 GCP 控制台删除 VM 实例和相关的防火墙规则,以避免任何潜在的(即使是免费层超额的)费用。
结语
通过以上步骤,您应该已经成功在 Google Cloud 的免费服务器上搭建了一个基于 Rclone 的 WebDAV 服务,将您的 Google Drive 变成了可远程访问的私人云盘。由于 GCP 免费层提供的资源以及 Rclone 强大的缓存机制,您可以经济高效地拥有这样一个实用工具。