Skip to main content

Following the instructions on CKAN DataStore with a little information.

 

Enable the plugin

In your CKAN config file (/etc/ckan/default/ckan.ini), update the datastore plugin

ckan.plugins = datastore

 

Set-up the database

The DataStore requires a separate PostgreSQL database to save the DataStore resources.  List the existing databases:

sudo -u postgres psql -l

Response

                                    List of databases
       Name        |    Owner     | Encoding | Collate |  Ctype  |   Access privileges
-------------------+--------------+----------+---------+---------+-----------------------
 ckan_default      | ckan_default | UTF8     | C.UTF-8 | C.UTF-8 |
 datastore_default | ckan_default | UTF8     | C.UTF-8 | C.UTF-8 |
 postgres          | postgres     | UTF8     | C.UTF-8 | C.UTF-8 |
 template0         | postgres     | UTF8     | C.UTF-8 | C.UTF-8 | =c/postgres          +
                   |              |          |         |         | postgres=CTc/postgres
 template1         | postgres     | UTF8     | C.UTF-8 | C.UTF-8 | =c/postgres          +
                   |              |          |         |         | postgres=CTc/postgres

 

Create the database and user

Create a database_user called datastore_default. This user will be given read-only access to your DataStore database in the Set Permissions step below:

sudo -u postgres createuser -S -D -R -P -l datastore_default

Create the database (owned by ckan_default), in tis instance call the database datastore_default:

sudo -u postgres createdb -O ckan_default datastore_default -E utf-8

 

Set URLs in CKAN config file

Uncomment the ckan.datastore.write_url and ckan.datastore.read_url lines in your CKAN config file and edit them if necessary, for example:

ckan.datastore.write_url = postgresql://ckan_default:{pass}@localhost/datastore_default
ckan.datastore.read_url = postgresql://datastore_default:{pass}@localhost/datastore_default

Remember to replace {pass} with the passwords you created for your ckan_default and datastore_default database users.

 

Set permissions

If you can connect to your database server as the postgres superuser using:

sudo -u postgres psql

Then you can use this connection to set the permissions.  But do this step outside of being in the database.  If you have run the above command, enter exit to leave the database CLI.  Now you can run:

ckan -c /etc/ckan/default/ckan.ini datastore set-permissions | sudo -u postgres psql --set ON_ERROR_STOP=1

 

Check the permissions have been updated, by 

sudo -u postgres psql -l

Response

                                         List of databases
       Name        |    Owner     | Encoding | Collate |  Ctype  |        Access privileges
-------------------+--------------+----------+---------+---------+----------------------------------
 ckan_default      | ckan_default | UTF8     | C.UTF-8 | C.UTF-8 | =Tc/ckan_default                +
                   |              |          |         |         | ckan_default=CTc/ckan_default
 datastore_default | ckan_default | UTF8     | C.UTF-8 | C.UTF-8 | =Tc/ckan_default                +
                   |              |          |         |         | ckan_default=CTc/ckan_default   +
                   |              |          |         |         | datastore_default=c/ckan_default
 postgres          | postgres     | UTF8     | C.UTF-8 | C.UTF-8 |
 template0         | postgres     | UTF8     | C.UTF-8 | C.UTF-8 | =c/postgres                     +
                   |              |          |         |         | postgres=CTc/postgres
 template1         | postgres     | UTF8     | C.UTF-8 | C.UTF-8 | =c/postgres                     +
                   |              |          |         |         | postgres=CTc/postgres
(5 rows)

 

 

Related articles

Andrew Fletcher18 Mar 2024
Resolving CVE-2022-48624 less issue
To resolve the CVE-2022-48624 vulnerability on Ubuntu using Nginx, it's crucial to understand that the issue lies within the "less" package, not Nginx itself. The vulnerability affects "less" before version 606, where close_altfile in filename.c in less omits shell_quote calls for LESSCLOSE,...
Andrew Fletcher06 Mar 2024
Terminal command to find and replace
In many terminal text editors, you use find command as reference in Terminal commands - find.  How about find and replace.  This action depends on the specific text editor you're using in the terminal.  Here are a few common terminal text editors and how you can find and replace...