Someone on council asks where the snow-clearing stats live. Finance points at a ZIP on the website from 2023. GIS has a shapefile in a folder only two people bookmarked. Open data policy says publish once, find forever. Without a catalog, "open" still feels closed.
CKAN (Comprehensive Knowledge Archive Network) is the open-source data portal platform governments and NGOs actually run: ~5k GitHub stars, maintained by the Open Knowledge Foundation ecosystem, AGPL-3.0. It powers catalog.data.gov, Canada's open.canada.ca/data, UN Humanitarian Data Exchange, and hundreds of regional hubs. Self-hosting CKAN is how you get the same machinery on your domain, your Postgres, your approval workflow.
What you are running
CKAN is a data management system, not a generic CMS with a download page bolted on:
- Datasets and resources — metadata, files, API links, versioning, public or organization-private until approved.
- Organizations — distributed publishing: each department gets admins, draft datasets, and bulk approve-to-public tools.
- Search and facets — keyword search, tags, groups, filters users expect from a modern catalog.
- Action API — RPC-style JSON API for everything the web UI does: list packages, search, create and update records, activity streams.
- DataStore — structured tables behind CSV/Excel resources; query and filter via API without downloading full files; previews with extensions like DataTables views.
- Harvesting — pull metadata from other CKAN sites, CSW geospatial catalogs, simple HTML indexes, and more via
ckanext-harvest. - Geospatial, charts, theming — map previews, line/bar/pie views, brandable templates; a large extension library on ckan.org.
Current supported line is CKAN 2.12.x on Python 3.10 through 3.14. Pick extensions carefully; major upgrades need planning.
Why self-host instead of a hosted portal SKU?
Data residency. Canadian municipalities, health authorities, and research groups often need datasets and audit logs on infrastructure they control. A CKAN VM in Beauharnois or Toronto with nightly Postgres backups matches how federal open data is already presented to the public, but scoped to your org.
Workflow fit. Organizations, private drafts, and harvest-from-existing-repos match real government publishing, not a single shared login for everyone.
API-first. Dashboards, research scripts, and partner apps consume the same Action API and DataStore endpoints; you are not screen-scraping your own site.
Extension without vendor lock-in. S3-backed filestore, SAML, custom schemas, and sector-specific validators exist as community extensions. Fork and patch under AGPL rules if you operate a public-facing portal.
Honest overhead. CKAN is PostgreSQL, Solr search, Redis, and a Python app stack, not a one-container hobby project. Package install targets Ubuntu LTS; Docker Compose via ckan-docker is the usual middle ground for pilots. Production hardening (TLS, backups, upgrade path, extension QA) is real work.
Getting started
Three paths from official docs:
- Ubuntu package — fastest on 20.04 or 22.04 if you want one CKAN site per server.
- Source — multiple sites on one box, non-Ubuntu, or development.
- Docker Compose —
ckan-dockerimages with Filestore and DataStore wired; extend from there toward production.
Proof of life: web UI for publishers, /api/3/action/package_search?q=... for integrators, enable DataStore + XLoader (or Datapusher+) so CSV uploads become queryable tables. Point harvest at a sister agency's catalog if you federate instead of re-keying metadata.
Who it's for (and who should skip it)
Good fit: provincial and municipal open-data teams, universities, NGOs publishing humanitarian or research datasets, anyone mirroring policies like Canada's open government portal at smaller scale.
Skip it: if you only need three static PDFs (use your main site). If you cannot run Postgres + Solr + ops for upgrades. If you need turnkey analytics BI; pair CKAN with Metabase or Superset separately, we have write-ups on those too.
Hosting in Canada
CKAN belongs on a managed VPS or dedicated box with enough RAM for Solr and Postgres, object storage or disk for Filestore, and a real backup strategy. Swift Host customers often already host the public website on Canadian servers; adding CKAN on a subdomain keeps catalog traffic and data under the same residency story as the rest of the stack.
Talk with Swift Host if you want sizing for CKAN 2.12, Docker vs package install, and backup scope for Postgres and uploaded files. We are in St. Albert and actually answer the phone.