我是 HyperApp 的作者,很久前就有用户一直催我要我写一些详细的图文教程,但我一直没抽出时间(懒)今天终于憋出来一篇文章,就讲讲大家最关心的话题吧…
这篇文章将会介绍如何获取由 Google 提供的一年 $300 美金的试用金,然后使用 HyperApp 搭建一个低延迟超高速的科学上网环境。网络延迟基本在50ms左右,并且可以流畅观看 Youtube 4K 视频。本文不需要读者有较深的技术背景,全部过程都可视化、自动化完成。
下文用 GCP 代表 Google Cloud Platform,指 Google 的整个云平台。GCE 是指 Google Cloud Engine,是 GCP 产品线里的一个主机产品。
本文前提条件
- 有一个 Google 账号,没有的话可以注册一个。
- 注册 GCP 免费试用需要用信用卡进行身份验证(只做验证,不会收费),所以你必须有一个 Visa/MasterCard 的信用卡才行。如果你是一位学生还没有信用卡,可以查看文末的学生优惠计划。
GCP 注册以及创建服务器
要访问 Google 首先需要你能科学上网,但是这篇文章又是介绍如何科学上网的,好像有点🐔生蛋蛋生🐔的矛盾… 其实你可以去App Store搜索 V屁恩,找一个免费的下载后,通过签到等方式暂时领取一天或者几个小时的免费低速试用来完成下面的教程。
注册 GCP 免费试用
- 登录Google账号后使用这个链接来注册 https://cloud.google.com/free/,在打开的页面中点击
Try it Free
。 - 接受条款,并点击
同意并继续
- 在页面中填入你的信息:
- 账号类型:个人
- 名称和地址:填写你的地址、电话等
- 付款方式:添加一个信用卡。这个信用卡将会用来验证身份,防止GCP被滥用。
- 点击
开始免费使用
完成注册
在后面的页面中,如果你能看到页面顶部有一个“礼物 🎁 ” 的小图标,说明已经获取了试用金。
新建主机
- 在左侧菜单中导航到 计算引擎 → VM 实例
- 点击加号按钮,创建一个 VM 实例。
- 名称:随意填入一个易记得名字
- 地区:建议选择
asia-east1-*
三个中的任意一个,这个机房是在台湾,国内的延迟只有 50~70ms,简直快到飞起。 - 机器类型:选择 “小型” (1.7G 内存) 就可以了。默认选中的 3.75G 的内存其实用不完。
- 启动磁盘:默认的Debian 8就可以,推荐 Ubuntu 16.04 LTS。另外为了防止将来磁盘不够用,你可以点击右下角的更改,大小里使用 20G 或者 30G。
- 防火墙:选中 “允许HTTP流量” 和 ”允许HTTPS流量“
点击创建
,稍等几分钟就会创建完毕,现在打开 HyperApp 开始配置这台服务器吧。
HyperApp
HyperApp 是一个部署自动化以及服务器监控管理的App,致力于让普通用户也可以使用云服务。这是我的另一篇介绍文章 HyperApp 让萌新也可以在云主机上自动化部署应用
本段介绍如何使用 HyperApp 管理刚刚创建的服务器,开启 BBR 加速,安装科学上网应用。
添加服务器
- 在
服务器
页面点击右下角的加号,然后选择第二个自动配置
- 点击
开始
,应用会自动生成一对密钥,但这个过程在某些手机上会耗时较长,请耐心等到 十几秒~几分钟 左右。 - 等到出现“一切就绪”时,点击
复制
将代码复制到剪贴板里,如果你用电脑操作的话可以点击发送
将代码通过任意一种方式发送到电脑上。
在 GCE 计算引擎 → VM 实例页面,选择刚刚创建的实例的 SSH ▽ 在浏览器窗口中打开
打开一个基于 Web 的 SSH 终端。
在浏览器的SSH中粘贴并运行刚刚复制的代码。等到二维码出现时,使用 HyperApp 扫描该二维码便会自动添加该服务器。添加后 HyperApp 会检测刚刚添加的服务器的基本运行状况。
永久添加公钥
注意:你可以暂时跳过本小段,进行后续的操作,如果 HyperApp 出现了认证错误的提示,可以回到这段进行操作。
刚刚的自动配置的功能在几乎所有主机上都可以用,但是 GCE 是个例外,它会清空用户自行添加的公钥,所以几分钟后可能就会出现密钥认证失败的错误。你可以通过以下步骤永久性的设置密钥。
- 打开
更多
→SSH Keys
→点击唯一的一个 Key
→复制公钥
。 - 在GCP 中打开 计算引擎 → 元数据 → SSH 密钥点击修改后,复制并添加刚刚的公钥。
- 添加后页面会出现一行新记录,主要有两列:
用户名
和密钥
。这个用户名应该是 HyperApp,然后打开 HyperApp → 服务器 → 点击服务器下面的螺丝按钮 → 修改用户名
为刚刚显示的用户名,保存后就可以了。
开发者注:两个问题
- 最新的版本(2.5.90) 中第2步有个bug,用户名没有设置对,复制公钥后,需要手动改下最后一串
[空格] 后面36个字符的 xx-xx-xx-xx
改成用户名@iPhone
的格式,用户名可以随便写,然后将修改后的公钥添加后按照第三步中的做就行了。不改也可以用,只要确保服务器的用户名和第三步时显示的用户名一致即可。 - 有些用户反馈
复制公钥
复制出来的是空的,这好像是个随机性的bug,可以尝试关闭App后再进来复制一次。
开启 BBR 加速,跑满带宽
这一步并不影响科学上网,但是会极大的提高上网质量。BBR是 Google 开发的TCP拥塞控制技术,并且已经合并到较新的Linux内核中。它的主要作用是可以让你跑满服务器的带宽。
比如说没有开启的情况下你观看 Youtube 720P的视频都可能会卡,但是开启了BBR后 1080P 的视频完全无卡顿,就连 4K 视频也可以流畅观看(有些网络特别卡的除外)。
要开启 BBR 需要升级 Linux 内核,不过不用急,在 HyperApp 中开启非常简单:
- 在服务器卡片中点击右上角的 Terminal 图标(就是那个长的像个表情
[ >_ ]
的按钮),进入 SSH 终端。 - 选择最下面的一行工具栏的第一个图标,然后点击 "teddyun/BBR" 一键脚本的链接,点击后会让你确认是否下载并执行外部脚本。
- 点击确认后会自动下载并执行,执行过程中需要点击键盘上回车键确认继续。如果想中断执行,那么点击
ctrl
后按c
终止执行。 - 稍等几分钟,等待系统内核升级到最新版后会自动重启。
注:这是系统层面的升级,执行完毕后不必对其它应用做任何配置。客户端也不需要做任何配置。
部署科学上网应用
在
商店
页面网络
分组下选择任意一个应用,这里我们选择占用资源最少的****-libev
,(下文用SS代替)点击该应用。在弹出的对话框中选择刚刚添加的服务器,点击创建应用
在出现的配置页面中输入简单的一些配置:
- Port: 端口,可以填入 80 或者 443(因为用其它端口需要设置防火墙)
- Password:随便填入一个密码
- Encrypt:选择一种加密方式,推荐针对移动访问优化的
chacha20
- OBFS: 使用 OBFS 可以将 SS 流量伪装成正常的网页访问从而达到欺骗效果,可以防止被墙或者运营商干扰。另外还有人利用此功能实现“免流”效果:运营商会对一些域名免收流量费,于是可以将所有SS流量伪装成对某个域名的访问从而达到免流效果,具体此处不表。可以暂时忽略这个选项。
保存后在应用卡片中点击选中的服务器,然后选择安装就可以了。
如果你使用其它端口,请参考文末的 设置GCE防火墙如何开启防火墙。
客户端设置
嗯,服务端这就安装好了,不过在手机及Mac/PC上想要使用还需要有个客户端。
iOS
iOS 上有很多 SS 的客户端可供选择,收费的有 小火箭、土豆丝、Xxxxx、Xxxxx 等。免费的可以使用 Wingy
。基本上所有的应用配置方法都是一样的,只要添加服务器,填入你的服务器IP、端口、密码和加密方式即可,这里不再详述。
Mac/Windows
Mac 和 Windows 上都有免费的 SS 客户端可以使用,配置方法也是只要输入你的IP、端口、密码和加密方式即可。
其它玩法
现在你有了一台 1.75G 内存的服务器了,只用来做SS好像有点浪费(SS只占用几M内存),其实使用 HyperApp 还有很多其它玩法,商店里面有很多其它应用,都可以自动安装配置。
比如你可以自己搭建一个博客、网站、论坛,个人网盘,聊天服务,并且可以自动配置HTTPS。如果你玩游戏可以创建一个 Minecraft 服务器。或者部署一个接收微信消息转发到Telegram的机器人。更多信息可以参阅👇 的 HyperApp 文档和教程。
HyperApp 支持
如果你遇到了各种各样的技术问题,比如无法安装、无法连接等,可以在群里召唤机器人或者开发者进行解答。或者在App里面点击 发送反馈邮件
获取帮助,这两种是最快的获取帮助的方式。
自建和购买商业服务对比有什么优势?
- 最主要的优势是隐私和安全,如果你看下上面SS的日志,你就知道服务商可以知道你的所有浏览历史的,如果你访问了不支持HTTPS的网站,那么请求内容也可能被监控(比如密码信息)。
- 另外是质量和成本,很多商家是使用和上面同样的机器但是卖给几百个人,你应该能明白了。成本方面没有免费试用的话1个人用可能会有点贵,但如果和朋友家人一起用就超值了,比如使用$2.5/月的 Vultr,每月500G 流量够很多人用的。
学生优惠计划
- 腾讯云:学生优惠套餐 ¥10/月,需抢购
- 阿里云:云翼计划 ¥9.9/月不过好像不能创建海外的主机所以无法搭建科学上网环境。
设置 GCE 防火墙
- 在GCP后台点击 网络 → 防火墙规则
- 点击
创建防火墙规则
- 名称:随便输入一个名称
- 目标:选择
网络中的所有示例
- 来源过滤:
0.0.0.0/0
- 协议和端口:
指定的协议和端口
下面输入tcp;udp:端口号