Venutian

the wee hours
15 January 2008

So, a while back, Sam Ruby decided to fork the web-based feed aggregator Planet into Venus. Venus is a nice refactoring of Planet that includes filtering support, feed normalization (all entries are normalized to Atom before being dealt with), Genshi templates, better feed parsing, etc.

Early in 2007, I decided to use rBuilder Online to make a little software appliance whose only job was to run Venus. It uses nginx as its lightweight web server, and has a distribution of Venus (packaged with Conary, natch) which is configured in such a way to easily support multiple Planets. (More on that in a minute.) I had some grandiose plans to create a custom plugin for the the rPath Appliance Platform Agent to manage the individual Planets, but sufficient time (or need) hasn’t materialized yet (and anyways, a nice configuration editor is probably a case of YAGNI, anyways). So for now, you’ll have to use vi to edit configurations, as per usual.

Venus has been packaged in such a way to ease customization. Each Planet is kept in /srv/venus/planets.d, which has a config.ini for the Planet. So, if you have a Planet called Schmanet, you’d create Schmanet’s config.ini in /srv/venus/planets.d/schmanet/config.ini.

For the web routing to work properly, you must make sure that your Planet’s output appears in /srv/venus/planets.d/planet_name/output. A good way to do this is to use the a boilerplate for the first part of your config file:

[Planet]
name = Planet Schmanet
link = http://planet.schmanet.com/
owner_name = Janet Weiss
owner_email = janet@schmanet.com
log_level = ERROR
cache_directory = planets.d/schmanet/cache
output_dir = planets.d/schmanet/output
filter_directories = filters
output_theme = themes/classic_fancy

See? As long as the output directory is beneath your Planet’s config.ini, you will be able to access your Planet’s output via http://your.server.name/planet/planet_name/. This is because nginx is configured to rewrite URLs for Planet:

location /planet/ {
    root       /srv/venus/planets.d/;
    rewrite    ^/planet/(.*)/$            /$1/output/index.html break;
    rewrite    ^/planet/(.*)/images/(.*)$ /$1/output/images/$2  break;
    rewrite    ^/planet/(.*)/(.*)$        /$1/output/$2         break;
}

Every hour, all the configured Planets are updated (via cron).

And that’s it. The result is called Venutian. Download and enjoy. Love it? Hate it? Let me know.

NOTE: As of this writing, Planet Conary is now powered by a Xen domU running Venutian. Someday, we may update our template to use something other than the old default Planet template (“classic_fancy!”). That day will come when the Round Tuits are plentiful.