Skip to main content

Set up your project

Before we start, please make sure you have the following prerequisites in place:

Set up PostgreSQL database

Set up PostgreSQL database

Rell requires PostgreSQL 16.3. The IDE can work without it but can't run a node. A console or a remote postchain app can run without a database.

The default database configuration for Rell is:

  • database: postchain
  • user: postchain
  • password: postchain


  1. Install Homebrew: Homebrew installation guide

  2. Install PostgreSQL:

brew install postgresql@16
brew services start postgresql
createuser -s postgres
  1. Prepare the PostgreSQL database:
psql -U postgres -c "CREATE DATABASE postchain WITH TEMPLATE = template0 LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8' ENCODING 'UTF-8';" -c "CREATE ROLE postchain LOGIN ENCRYPTED PASSWORD 'postchain'; GRANT ALL ON DATABASE postchain TO postchain;"

If you get an error saying that peer authentication failed, you need to change the authentication method from peer to md5. You can change it in the pg_hba.conf file of your psql database.

Install Chromia CLI

Install Chromia CLI

This topic contains instructions to install and update the Chromia CLI.



Before installing the Chromia CLI, ensure you have installed the Java Development Kit (open JDK) and have at least Java 17. For more information, see JDK installation guide.

You can download and install the latest Chromia CLI from here or via a package manager:

brew tap chromia/core
brew install chromia/core/chr

Some versions are backed up, so you can return to a previous version of the CLI. To install a prior version, use this command to install and switch versions:

brew install chromia/core/chr@<version>
brew unlink chr
brew link chr@<version>

To see which versions are available, search for them using brew search: brew search chr.


You can download and install the latest Chromia CLI from here, or if you have installed the Chromia CLI via a package manager, you can update it with the following:

brew update
brew upgrade chr


Docker can run a standalone Linux container with the Chromia CLI pre-installed. Make sure that you have set up the PostgreSQL database.

To use the published Docker images, you must first have Docker installed and configured on your host machine. Please refer to the Docker documentation on how to install Docker on Windows, Mac, and Linux.

Start the Docker container with Chromia CLI pre-installed

To run the latest version of the Chromia CLI, use the docker run command and specify the CLI Docker image name and chr.

docker run --rm -v $(pwd):/usr/app<latest version> chr

When configuring your chromia.yml file to ensure the Chromia CLI can access the PostgreSQL instance, use the following instructions based on your operating system:

  • Mac: Specify host.docker.internal in the database:host field in chromia.yml.
  • Windows: Set database:host to in chromia.yml.
  • Linux: Instead of modifying chromia.yml, when running Docker on Linux, include the --network=host argument in your Docker CLI commands.

These configurations are crucial to ensure connectivity between Chromia CLI and the PostgreSQL instance.

See the Docker command line reference for information about updating or uninstalling the Docker image.


# Allocate a pseudo-TTY one when run in interactive mode
if [ -t 0 ] && [ -t 1 ] ; then TTY="--tty"; else TTY=""; fi

docker run \
# Sets the network to host to not need to change the database hostname (linux only)
--network=host \
# Set timezone based on system settings (linux only)
-e TZ=$(cat /etc/timezone) \
# Sets process ownership to current user
--user $(id -u):$(id -g) \
--mount type=bind,source="/etc/passwd",target=/etc/passwd,readonly \
--mount type=bind,source="/etc/group",target=/etc/group,readonly \
# Configures ssh-agent (only needed if chr install is called on non-public repositores)
--mount type=bind,source="${HOME}/.ssh",target=${HOME}/.ssh,readonly \
--mount type=bind,source="${HOME}/.config/jgit",target=${HOME}/.config/jgit \
# Mounts current folder into the container (Use `Get-Location` on PowerShell)
--mount type=bind,source="$(pwd)",target=/usr/app \
--interactive ${TTY} \
--rm \${CHR_VERSION:-latest} chr "$@"

Let's kick things off by setting up your blockchain app project. Create a new project and navigate to it in your terminal:

$ chr create-rell-dapp my-news-feed --template=plain
$ cd my-news-feed

This command will generate essential project files and scripts for you.