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.