
CKAN: installatie, extensies, harvesting en API
CKAN is open source dataportaalsoftware onder de AGPL. De nieuwste release is 2.12.0 van 26 augustus 2026; installeren kan via pakket, broncode of Docker Compose. Met ckanext-dcat publiceert u de catalogus als DCAT-RDF en haalt u andere catalogi binnen. De API werkt zonder inlog voor lezen en is hieronder getest tegen een openbare instantie.

Welke CKAN-versie draait nu en wat is er nieuw?
CKAN 2.12.0 is de nieuwste stabiele release. Het wijzigingsoverzicht in de CKAN-documentatie noemt als datum 26 augustus 2026 en zegt dat CKAN 2.12 Python 3.10 en nieuwer ondersteunt. Dezelfde dag verschenen de patchreleases 2.11.6 en 2.10.11. De releasedata zijn gelijk aan die van de releases in de repository ckan/ckan op GitHub. De publieke demo-instantie op demo.ckan.org meldde via status_show op 11 oktober 2026 nog versie 2.11.5, de Canadese overheidsportal 2.10.8: beide dus zonder de beveiligingsfixes van augustus.
| Release | Datum | Opmerking |
|---|---|---|
| 2.12.0 | 26 augustus 2026 | Nieuwe hoofdversie; vraagt een database-upgrade met ckan db upgrade en een aanpassing van de DataStore-rechten |
| 2.11.6 | 26 augustus 2026 | Patchrelease met beveiligingsfixes |
| 2.10.11 | 26 augustus 2026 | Patchrelease met dezelfde fixes |
| 2.11.5 | 29 april 2026 | Draaide op de demo-instantie op 11 oktober 2026 |
Nieuw in 2.12 zijn onder meer bestanden als zelfstandige entiteit, snellere paginering in de DataStore en een nieuw thema (Midnight Blue) dat in 3.0 de standaard moet worden. Voor een gemeente die een portaal beheert is het belangrijkste punt van deze periode echter de beveiliging, zoals hieronder.
De afweging of CKAN überhaupt de juiste keuze is, staat op CKAN of alternatief. Deze pagina gaat ervan uit dat u CKAN gekozen hebt en wilt weten hoe het werkt. De achtergrond bij het Nederlandse metadataprofiel staat op DCAT-AP-NL.
Welke beveiligingsfixes kwamen er in augustus 2026?
De patchreleases van 26 augustus 2026 repareren acht kwetsbaarheden. Het wijzigingsoverzicht van 2.11.6 noemt ze met GitHub-advisorynummer (GHSA) en de aantekening "CVE pending". In de advisorylijst van ckan/ckan staat bij zes ervan inmiddels een CVE-nummer, maar die records waren op 11 oktober 2026 nog niet gepubliceerd in cve.org of de NVD. Deze pagina gebruikt daarom de GHSA-nummers:
| Advisory | Omschrijving in het changelog | Ernst |
|---|---|---|
| GHSA-5r6j-4c43-7mx6 | Unauthenticated nested Solr QParser allowlist bypass in package_search | Hoog (8,6) |
| GHSA-73fv-x47v-f4j5 | Authenticated stacked SQL injection in datastore_create | Hoog (8,8) |
| GHSA-8hw7-23gj-5599 | datastore_search_sql Authorization Bypass | Hoog (7,5) |
| GHSA-3g5q-3wf6-p8rc | markdown_extract() Stored XSS on Dataset Listings | Hoog (7,7) |
| GHSA-8frv-ccr7-4m2p | Stored XSS via resource fields in Text view | Midden (6,5) |
| GHSA-p5rh-49m9-56vx | Stored XSS vector via resource name in DataTables view | Midden (6,2) |
| GHSA-6499-jgj4-2wpf | Session Fixation in Registration View | Midden (6,8) |
| GHSA-jgwg-vp4m-5xw5 | Exposure of private metadata via follow API actions | Midden (5,3) |
De API package_search staat voor iedereen open, dus de eerste regel is bij een publieke instantie de meest relevante. Ook de vorige ronde (2.11.5 en 2.10.10, 29 april 2026) bevatte een SQL-injectie zonder inlog in datastore_search_sql (CVE-2026-42031). Werk dus bij naar 2.10.11, 2.11.6 of 2.12.0, en leg vast wie updates inplant en binnen welke termijn. Dat hoort bij beheer en hosting.
Hoe installeer ik CKAN?
CKAN kent drie officiële installatiewegen: pakket, broncode en Docker Compose. De documentatie beschrijft ze als volgt naast elkaar:
| Weg | Voorwaarde of eigenschap | Past bij |
|---|---|---|
| Pakketinstallatie | Vereist Ubuntu 20.04 of 22.04, 64-bit | Snelle productie-installatie op een van die systemen |
| Broncode | Python-applicatie met PostgreSQL, Solr en Redis; werkt ook op andere systemen | Ontwikkelen of een eigen besturingssysteem |
| Docker Compose | De repository ckan-docker bevat scripts en images; FileStore en DataStore zijn voorgeconfigureerd | Snel opzetten en extensies ontwikkelen |
Let op de leeftijd van de pakketinstallatie. De pakketweg noemt alleen Ubuntu 20.04 en 22.04. Controleer vóór u kiest of dat besturingssysteem nog ondersteund wordt door de leverancier ervan en pas anders de Docker Compose- of de broncode-installatie toe. Het draaiende systeem bestaat in alle gevallen uit de CKAN-applicatie, PostgreSQL voor de database, Solr voor zoeken en Redis; de pakketinstallatie voegt daar de DataPusher aan toe, een aparte service die bestanden automatisch in de DataStore laadt.
Voor productie komt daar meer bij dan de installatie zelf: back-ups van PostgreSQL en de bestandsopslag, TLS, monitoring en een updatebeleid. Waar dit in de EU draait, speelt ook EU-cloud voor overheidsdata. De totale opzet voor een gemeente, inclusief catalogus en publicatie, staat bij open data-platform.
Wat doet ckanext-dcat en hoe werkt harvesting?
ckanext-dcat is de extensie die CKAN-metadata als DCAT-RDF aanbiedt en andere catalogi kan inlezen. De documentatie omschrijft het als volgt:
Ckanext-dcat is a CKAN extension that helps data publishers expose and consume metadata as serialized RDF documents using DCAT
Bron: documentatie van ckanext-dcat. De extensie valt, net als CKAN zelf, onder de AGPL; de laatste versie op PyPI is 2.4.4 van 11 augustus 2026. Over CKAN 2.12 spreken de bronnen elkaar tegen: de README en de documentatie zeggen nog "currently supported in CKAN 2.10 and CKAN 2.11", maar het changelog van 2.4.4 meldt "Support for CKAN 2.12" en de testworkflow van het project draait op 2.10, 2.11 en 2.12. Test bij een upgrade naar 2.12 daarom uw eigen profiel en harvesters in een kopie.
De installatie is kort:
pip install ckanext-dcat
# in uw CKAN-configuratiebestand:
ckan.plugins = dcat dcat_rdf_harvester structured_data
Volgens de documentatie biedt de extensie vooraf gebouwde schema's (voor ckanext-scheming) voor DCAT-AP versie 1.1, 2.1 en 3 en voor DCAT-US 3, DCAT-endpoints in verschillende RDF-serialisaties, en een RDF-harvester (dcat_rdf_harvester). Het standaardprofiel is euro_dcat_ap_3; voor automatisch harvesten installeert u daarnaast ckanext-harvest. In de basisprofielen die de documentatie noemt, staat geen DCAT-AP-NL; test daarom met uw eigen metadata of een Nederlands profiel van een derde of eigen aanpassing nodig is.
De Canadese portal draait ckanext-dcat (zichtbaar in status_show). Daar geeft /data/en/dataset/<id>.ttl één dataset als Turtle (status 200, mediatype text/turtle, met één dcat:Dataset en twee dcat:Distribution's) en geeft /data/en/catalog.ttl de catalogus gepagineerd met hydra:PagedCollection, 100 datasets per pagina en in totaal 48.071 datasets (481 pagina's). Een valkuil: de paginalinks in die catalogus verwijzen naar https://open.canada.ca/catalog.ttl?page=… zonder het deel /data/en, en dat adres gaf op 11 oktober 2026 status 404. Een harvester die de links blind volgt, loopt vast; zet bij een eigen portaal achter een proxy de site-URL dus correct.
Hoe vraag ik een CKAN-instantie uit met de API?
De CKAN-API werkt met acties onder /api/3/action/ en geeft JSON terug. Lezen vraagt voor publieke gegevens geen inlog. De twee acties die u het meest gebruikt zijn package_search om te zoeken en package_show om één dataset in te zien. De API-documentatie zegt over de eerste dat ze solr-zoekparameters accepteert en daarnaast zoekresultaten, een aantal en facetten teruggeeft.
Het voorbeeld hieronder draait tegen de openbare Canadese portal, omdat die op 11 oktober 2026 met een open API en uitgebreide data beschikbaar was. De portal is zelf geen Nederlandse bron; het gaat om de werking van de API. Zoeken met curl:
curl -s -G "https://open.canada.ca/data/en/api/3/action/package_search" \
--data-urlencode "q=hydrology" --data-urlencode "rows=1" \
--data-urlencode "fl=name,license_id,metadata_modified"
Antwoord op 11 oktober 2026, ingekort:
{"success": true, "result": {"count": 396,
"results": [{"name": "725d34b9-59b2-4dc8-8068-0a5a1d770380",
"license_id": "ca-ogl-lgo", "metadata_modified": "2024-12-09T17:14:40.219Z"}], ...}}
Dezelfde stappen in Python, met alleen de standaardbibliotheek. Het script zoekt, haalt de eerste dataset op en toont de naam, de licentie en de formaten van de resources:
import json, urllib.parse, urllib.request
BASE = "https://open.canada.ca/data/en/api/3/action/"
def action(name, **params):
url = BASE + name + "?" + urllib.parse.urlencode(params)
with urllib.request.urlopen(url, timeout=30) as resp:
body = json.load(resp)
if not body["success"]:
raise RuntimeError(body.get("error"))
return body["result"]
zoek = action("package_search", q="hydrology", rows=1)
print("treffers:", zoek["count"])
ds = action("package_show", id=zoek["results"][0]["id"])
print(ds["name"], ds["license_id"], [r["format"] for r in ds["resources"]])
De uitvoer was treffers: 396 en daarna 725d34b9-59b2-4dc8-8068-0a5a1d770380 ca-ogl-lgo ['CSV', 'CSV']. Het aantal treffers verandert met de inhoud van de portal. Voor een eigen portaal vervangt u alleen de BASE-URL.
Schrijven (datasets aanmaken of wijzigen) vraagt een API-token in de header Authorization, en dat token hoort niet in broncode of in een repository. Hoe u die publicatie in een gemeente inricht, staat bij open data publiceren als gemeente.
Welke valkuilen kent CKAN in beheer?
De valkuilen zitten minder in de installatie dan in het onderhoud en in de verwachtingen over metadata.
- Parameter
rows. Het verzoekpackage_search?rows=-1gaf op de Canadese portal status 409 (conflict). Vraag dus altijd een positief aantal op en loop metstartdoor de resultaten; de catalogusendpoints pagineren per 100. - Veldfilter
fl. Op dezelfde portal gafflalleen de gevraagde velden terug. Dat spaart bandbreedte, maar het veldtitle_translatedkwam er niet uit, ook niet toen het inflstond. Haal titels en andere extensievelden daarom op metpackage_show. - Versieverschillen tussen portalen. De demo draaide op 2.11.5, de Canadese portal op 2.10.8. Een script dat tegen één versie is getest, kan anders reageren op een ander. Lees
status_showom te zien welke versie en welke extensies er draaien. - Zoekmachine en database. Het zoeken loopt via Solr, niet via PostgreSQL. Een dataset die net is aangemaakt, kan even niet vindbaar zijn als de index achterloopt.
- AGPL. Wijzigt u CKAN of een extensie en biedt u die als netwerkdienst aan, dan moet u de broncode van die wijzigingen aan de gebruikers beschikbaar stellen. De consequenties staan op CKAN of alternatief.
Wanneer is CKAN niet de juiste keuze?
Voor een gemeente met een handvol datasets is een volledig CKAN-portaal vaak meer dan nodig: een statische DCAT-catalogus kan volstaan, zoals beschreven op de pagina over alternatieven, en u bespaart het beheer van PostgreSQL, Solr en Redis. Kies ook niet voor CKAN als u vooral een kaartviewer zoekt; daarvoor is een viewer als de GIS-viewer voor gemeenten bedoeld. Zoekt u geodata-API's naast uw catalogus, dan past pygeoapi of GeoServer er goed naast, met CKAN als catalogus erboven.
Kies CKAN ook niet als niemand het patchritme kan dragen. Deze pagina laat twee beveiligingsrondes in vier maanden zien, met elke keer een database- of DataStore-onderdeel erin, en een portaal dat een jaar niet is bijgewerkt is dan een risico. Hebt u die capaciteit niet, dan is een statische DCAT-catalogus die data.overheid.nl kan harvesten vaak verstandiger. De rol van CKAN binnen een groter dataplatform, naast opslag en API's, staat bij dataplatforms.
Veelgestelde vragen
Welke CKAN-versie moet ik nu installeren?
De nieuwste stabiele release is 2.12.0 van 26 augustus 2026. ckanext-dcat 2.4.4 meldt in zijn changelog ondersteuning voor CKAN 2.12, al noemt de README nog alleen 2.10 en 2.11; test dus in een kopie. Blijft u op 2.10 of 2.11, installeer dan minimaal 2.10.11 of 2.11.6, met de beveiligingsfixes van augustus 2026.
Is CKAN gratis en wat betekent de AGPL?
CKAN is open source en valt onder de AGPL. U mag het gratis gebruiken. Wijzigt u de software en biedt u die als netwerkdienst aan, dan moet u de broncode van uw wijzigingen beschikbaar stellen aan de gebruikers. Gebruik zonder wijzigingen levert die verplichting niet op. Overleg bij twijfel met uw juridisch adviseur.
Kan ik de CKAN-API gebruiken zonder inlog?
Ja, voor publieke gegevens. Acties zoals package_search en package_show onder /api/3/action/ werkten op 11 oktober 2026 op de Canadese portal zonder inlog. Schrijven vraagt een API-token. Een instantie kan lezen beperken, dus gebruik status_show om te zien wat een portal toestaat.
Hoe haal ik een andere DCAT-catalogus binnen in CKAN?
Installeer ckanext-dcat met de plugin dcat_rdf_harvester en ckanext-harvest. De RDF-harvester leest DCAT in verschillende serialisaties en maakt er CKAN-datasets van, met een profiel als euro_dcat_ap_3. Test eerst met een klein deel van de bron en controleer de paginalinks van de bron.
Welke software heeft CKAN nodig om te draaien?
CKAN is een Python-applicatie die volgens de installatiedocumentatie drie diensten nodig heeft: PostgreSQL, Solr en Redis. De pakketinstallatie vraagt Ubuntu 20.04 of 22.04 en voegt de DataPusher toe. Bij Docker Compose zijn deze onderdelen als containers voorgeconfigureerd, inclusief de FileStore en DataStore. Reken voor productie ook op back-ups en monitoring.
Bronnen
- CKAN — Changelog (2.12.0, 2.11.6, 2.10.11) (gelezen op )
- GitHub — ckan/ckan releases (2.12.0, 2.11.6, 2.10.11 op 26 augustus 2026) (gelezen op )
- GitHub — ckan/ckan security advisories (GHSA, ernst en CVSS) (gelezen op )
- CVE.org — CVE-2026-42031 (gelezen op )
- ckanext-dcat — CHANGELOG (v2.4.4: Support for CKAN 2.12) (gelezen op )
- ckanext-dcat — testworkflow (CKAN 2.10, 2.11, 2.12) (gelezen op )
- CKAN — Installing CKAN (gelezen op )
- CKAN — Installing CKAN from package (gelezen op )
- CKAN — Installing CKAN from source (gelezen op )
- CKAN — API guide (gelezen op )
- ckanext-dcat — Documentation (gelezen op )
- ckanext-dcat — Getting started (gelezen op )
- ckanext-dcat — Base profiles (gelezen op )
- PyPI — ckanext-dcat 2.4.4 (gelezen op )
- Open Government Portal (Canada) — CKAN API (gelezen op )
- CKAN Demo — status_show (gelezen op )
Meer over TechinFlow
Een nieuw bureau in Haarlem voor maatwerk software, GIS en dataplatforms op open standaarden.
Een vraag of opdracht?
Vertel kort wat er speelt en voor welke organisatie. We reageren per e-mail.
Stuur een bericht