用 Updog 挖老坟和新坟

谢益辉 2017-02-12

注:Updog 服务已经关停,下文的推荐不再适用。

这两年静态网站的部署工具真是变得简单得令人发指,而且费用低廉地跟不要钱似的(有的服务确实就是不要钱)。现在我自己的网站通过 GitHub 自动部署在 Netlify 上,这个方法已经够简单了,但还有比它更简单的办法,这也是我用了好一阵子但没透露的秘密武器,它就是 Updog

厉害啊,图文无关

Updog 也是我脑子里的“雷声隆隆”的项目之一,非常厉害。我发现它之后感叹了好长时间。它的主意真是简单而绝妙:它是基于 Dropbox 的服务1,通过 Dropbox 的 API 把你的一个文件夹变成可在线直接访问的网站。原理很简单:你给 Updog 一个授权,让它可以访问你的 Dropbox 文件夹,然后它给你一个子域名2,当用户访问一个网址 https://foo.updog.co/bar.html 的时候,Updog 利用自己的授权和 Dropbox API 从你的文件夹中读取文件 bar.html 返回给用户。这样 Updog 不需要自己的服务器存储你的任何文件,它只是充当了一个中间人角色,仰仗 Dropbox API 把你的内容传递给用户。

这样,部署一个静态网站再也不需要上传上传再上传;只要你的文件在指定的 Dropbox 文件夹里,Dropbox 会自动上传更新。也就是说,上传这个步骤变成了隐式的。只要挪一个文件到 Dropbox 里,几秒后别人通过你给的链接就可以访问这个文件了,再也不用邮件一坨坨附件往来。如果你的文件是需要保密的,Updog 还提供密码保护功能(这个功能需要付费,但终生只需要一口价 20 美元)。

理论上现在任何静态网站编译工具生成的网站都可以用这种方式部署,但我自己仍然用的 Netlify,主要是看中它的 CDN 云服务以及重定向功能,这些可以下次再说。

因为发现了 Updog,我又把自己一个千年老坟挖出来了:https://r.yihui.org 这大概是我自己设计的第一个静态网站,文件我都还没扔,所以基本上复制粘贴到 Dropbox 里,给域名设置一个 CNAME 记录指向 Updog,这个死了好几年没埋的网站就又活过来了。当然,这个网站纯属展览历史,看看洒家初学网站时的稚嫩的技术、怪异的审美以及不堪的英文;网站的内容就不要看、更不要信了,要是信了小心连年都过错。不过呢,十年前我写的 JavaScript 脚本现在仍然还可以跑,网站里面的动画戳一下按钮还可以动,这一点我倒是还有点吃惊。事实上,这个网站便是我来美帝读博的导火索

过去我的多数幻灯片都放在 Dropbox 的 Public 文件夹下,这是 Dropbox 的一个特殊文件夹,也就是任何人都可以通过一个特定网址公开访问的文件夹。去年下半年的时候,Dropbox 停止了这个服务。它先是停止了直接显示 HTML 文件为网页的功能,过了几个月,它干脆停止了 Public 文件夹功能,也就是说再也不能把 Dropbox 文件夹当网站用了。我不明白为什么 Dropbox 要这样做,但因为这件事,我找到了 Updog,比之前我直接用 Public 文件夹作网站的办法还要高明,比如支持自定义域名、可密码保护,等等,所以一分钟之内就看对眼了,挖了个新坟来存放我的幻灯片,现在各位客官看我的幻灯片网址大多应该是 slides.yihui.org 开头了。

我网站里的图片基本上也通过 Updog 服务,这是因为我的 GIT 洁癖,我不想把二进制文件(如 PNG 图片)放到 GIT 里管理,所以配置一下 knitr,直接把 R Markdown 的代码段生成的图片放到 Dropbox 里,然后 GIT 里只需要留下一行文本(图片的网址),这世界就干净多了,比如这篇老文章。个中魔法以后再详谈,感兴趣的黑客们可以看我用来编译网站的 R 代码


  1. 意味着天朝用户基本上没法用。 ↩︎

  2. 也可以配置自己的域名。 ↩︎