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
Install
- Mac
- Linux
- Docker
-
Install Homebrew: Homebrew installation guide
-
Install PostgreSQL:
brew install postgresql@16
brew services start postgresql@16
createuser -s postgres
- 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
tomd5
. You can change it in thepg_hba.conf
file of yourpsql
database.
- Install PostgreSQL:
sudo apt install postgresql-16
- Prepare the PostgreSQL database:
sudo -u postgres psql -c "CREATE DATABASE postchain WITH TEMPLATE = template0 LC_COLLATE = 'C.UTF-8' LC_CTYPE = 'C.UTF-8' ENCODING 'UTF-8';" -c "CREATE ROLE postchain LOGIN ENCRYPTED PASSWORD 'postchain'; GRANT ALL ON DATABASE postchain TO postchain;"
-
Install Docker: Docker installation guide
-
Prepare the PostgreSQL database:
docker run --name postgres -e POSTGRES_USER=postchain -e POSTGRES_PASSWORD=postchain -p 5432:5432 -d postgres:16.3-alpine3.20
note
We use the Alpine version of PostgreSQL because it provides the correct collation settings by default. This can be explicitly set using the environment variable:
POSTGRES_INITDB_ARGS="--lc-collate=C.UTF-8 --lc-ctype=C.UTF-8 --encoding=UTF-8"