<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:wfw="http://wellformedweb.org/CommentAPI/"
     >
  <channel>
    <title>Blogofile</title>
    <link>http://www.blogofile.com/blog</link>
    <description>A static blog engine/compiler</description>
    <pubDate>Sat, 13 Oct 2012 19:21:04 GMT</pubDate>
    <generator>Blogofile</generator>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Announcing Vaporfile - Deploy Blogofile to Amazon S3</title>
      <link>http://www.blogofile.com/blog/2011/02/19/blogofile-on-amazon-s3</link>
      <pubDate>Sat, 19 Feb 2011 23:20:00 EST</pubDate>
      <category><![CDATA[deployment]]></category>
      <guid>http://www.blogofile.com/blog/2011/02/19/blogofile-on-amazon-s3</guid>
      <description>Announcing Vaporfile - Deploy Blogofile to Amazon S3</description>
      <content:encoded><![CDATA[<p>Amazon recently announced that they have <a href="http://aws.typepad.com/aws/2011/02/host-your-static-website-on-amazon-s3.html">upgraded their S3 service</a> to
allow hosting of entire websites. The first thing to pop into my head
when seeing this announcement was: "Ooo, I wonder if Blogofile can work
with that?"</p>
<p>Indeed it can! This is quite cool, because this means that Blogofile
sites can be run without the need for a full webserver, and will only
cost mere pennies per month for the more meager and less-trafficked
sites. This is even more of a boon for security reasons: no more
maintenance of server patches if all you're doing is running a blog.</p>
<p>I uploaded a <a href="http://s3.blogofile.com">test Blogofile site</a> using
S3Fox, and although it was a little cumbersome, it worked! For use
with Blogofile on a more permanent basis, I want something I can run
from the command line and also be scriptable, so I wrote a python app
to do the job: <a href="https://github.com/enigmacurry/vaporfile">Vaporfile</a>.</p>
<p><em>Vaporfile uploads static websites to the cloud.</em> </p>
<p>You can see the <a href="https://github.com/enigmacurry/vaporfile">installation and usage
instructions</a> over on the
github page, but here's a rough gist:</p>
<pre><code>$ vaporfile create
</code></pre>
<p>This starts a wizard to configure a website. You configure the S3 bucket
name, the local path that contains the website, and other config
parameters. The main reason for using a wizard rather than command
line arguments is because of the nasty possibility of deleting your
entire website because of the wrong command line parameters. All the
configuration is stored and loaded from a JSON file in your home
directory, <code>~/.vaporfile</code>, which can also be edited by hand if needed.</p>
<pre><code>$ vaporfile upload &lt;name-of-website&gt;
</code></pre>
<p>This synchronizes all of the files in the configured website folder on
your local machine to the S3 bucket. Any files that are new or have
changed (based on md5 sum) are uploaded. Any files that have been
deleted locally are deleted from the server (unless you specify
<code>--no-delete</code>).</p>
<pre><code>$ vaporfile list
</code></pre>
<p>This lists all the websites you've configured along with their local
locations.</p>
<pre><code>$ vaporfile credentials store
</code></pre>
<p>This lets you reconfigure your AWS credentials.</p>
<pre><code>$ vaporfile credentials delete
</code></pre>
<p>This removes your AWS credentials completely.</p>
<p>That's it in a nutshell. And in case it's not obvious, Vaporfile is
not specific to Blogofile; it will upload any old website to S3,
because that's all Blogofile sites are, just plain static HTML content.</p>
<p>Later on, this will probably also be wrapped into a Blogofile plugin
for ease of use, but I wanted to get this out there sooner rather than
later, because it's just that cool :)</p>]]></content:encoded>
    </item>
  </channel>
</rss>
