I'm looking for advice on software for managing a largish photo album for a website. 2000+ pictures, one-time drop (probably).

I normally use MarginalHack's album, which does what I want: pre-generate thumbnails and HTML for the pictures, so I can serve without needing a dynamic run-time, so there's less attack surface to worry about. However, it doesn't handle pagination or the like, so it's unwieldy for this case.

This is a one-time drop for pictures from a wedding, with a shared usercode/password for distribution to the guests; I don't wish to put the pictures in a third-party hosting environment. I don't wish to use PHP, simply because that's another run-time to worry about, I might relent and use something dynamic if it's Python or Perl based (as I can maintain things written in those).

I currently have: Apache serving static files, Album-generated, some sub-directories to divide up the content to be a little more manageable.

Something like Album but with pagination already handled would be great, but I'm willing to have something a little more dynamic, if it lets people comment or caption and store the extra data in something like an sqlite DB. I'd want something light-weight, not a full-blown CMS with security updates every three months.

I don't want to upload pictures of other peoples' children into a third-party free service where I don't know what the revenue model is. (For my site: revenue is none, costs out of pocket).

Existing server hosting is *nix, Apache, some WSGI. Client-side I have MacOS.

Any advice?

  • Go for static based site if you'll never ever want to delete any photo or change anything in it in your whole life. Otherwise go for Drupal, Joomla etc CMS which will give you immense flexibility.
    – AgA
    Oct 13, 2012 at 10:29
  • @John The OP is asking for a non-PHP solution that won't require maintenance. That rules out Drupal and Joomla, and many off-the-shelf CMSes. I like Drupal, but it requires frequent security updates so wouldn't be a good low-maintenance solution.
    – Dan Blows
    Feb 10, 2013 at 10:07

3 Answers 3


Jekyll, with a photo gallery plugin like https://github.com/ggreer/jekyll-gallery-generator Unfortunately, that one doesn't have pagination but you could get round that with subgalleries.

Generate everything locally, then just upload the HTML and images to something like S3 or Cachefly.

  • Thanks; I wasn't aware of Jekyll when I posted the question, but your answer looks good. Not marking as the complete answer because there's still no pagination so it's still unwieldy as-is. The generate/upload is good, but this is out of pocket, so it goes on my existing colo machine, where the privacy policy is mine. Thanks, for the best and most useful answer answer so far.
    – Phil P
    Feb 17, 2013 at 6:54

If you know Python/Perl, why don't you just write a script that generates a paginated gallery? That's pretty easy to do.

Also, it's pretty easy to find out the revenue model of most free web services. The vast majority of them fall into either a freemium model (99% of users pay nothing, subsidized by the 1% that pay for a premium subscription) or are subsidized by advertising, or they may use a combination of both.

Open source companies like Automattica (the makers of Wordpress) also use their free products/services to promote themselves and their platform, and they make money off of enterprise licensing, support and consulting.

And then there are mega corporations like Google where their core business is able to subsidize lots of unrelated products that they provide just to capture mindshare, grow their brand, retain thought leadership, and to have a strategic foothold on new markets.

But, at the end of the day, what does their revenue model matter? All that should matter is their privacy policy, their security policy, and their data migration policy. With companies like Google, you pretty much have nothing to worry about (Google also takes a particularly strong stance on the last point; their position has always been that it's your data, and you should be able to take it with you, so there's no threat of a vendor lock-in).

The point is...

If you're unable to provide a reasonably modern photo gallery/sharing experience, then you're really not doing anyone any favors by hosting their galleries, even for free. Because there are a ton of exceptional dedicated photo gallery hosting services out there that deliver a rich user experience with lots of useful features.

I mean, I could host all of my friends & family's photos if I wanted to, and I can actually do it on a decently robust CMS and code in any features that they might request. But it just makes much more sense to put the photos on Flickr, Picasa, Photosynth, Facebook, etc. It just makes the photos much eaiser to view, manage, use, share for the end users. Not to mention, the CDNs that these professional services use offer much greater availability and performance than anything you'd likely be able to provide.

  • I do not put pictures of other peoples' children into online sharing systems without their prior informed consent. I will hold onto them and share them via password with the few people for whom access is needed. In this case, I used Album because I had it to hand and I gave a login only to my wife and to the bride and they sorted out selecting the worthwhile photos for broader dissemination.
    – Phil P
    Jan 4, 2012 at 8:03
  • @Phil P: Flickr, Picasa, etc. allow you to keep photos private and only share them with individual people. It would be no different from you emailing the photos to them. Jan 4, 2012 at 19:20

Haven't used it for a while, but I always used to use Gallery:


  • That uses PHP, which I'd like to avoid, as noted, since it's another run-time to manage. When I have had PHP installed, I lock down a number of options, including safe_mode. codex.gallery2.org/Gallery3:Requirements notes that PHP's safe_mode must be disabled -- I'm not willing to run a non-safe_mode PHP app.
    – Phil P
    Jun 7, 2011 at 21:47
  • Ahh, I see. Sorry, missed that point. BTW, isn't safe mode now deprecated?
    – adam
    Jun 7, 2011 at 22:39
  • See, that just shows out out-of-date I am on PHP and is another argument for not adding a new runtime for a site I want to set up and then forget about, instead of actively maintaining it. Staying current on PHP would be fine, if it were important to me, but not for this project.
    – Phil P
    Jun 7, 2011 at 23:03

Not the answer you're looking for? Browse other questions tagged or ask your own question.