website/docs/guides/installation.md
You need to have a Postgres database and to run the Electric sync service in front of it.
Electric is a web application published as a Docker image at electricsql/electric. It connects to Postgres via a DATABASE_URL.
The simplest way to run Electric is using Docker.
You can run a fresh Postgres and Electric connected together using Docker Compose with this docker-compose.yaml:
<<< @/public/docker-compose.yaml
For example you can run this using:
curl -O https://electric-sql.com/docker-compose.yaml
docker compose up
Alternatively, you can run the Electric sync service on its own and connect it to an existing Postgres database, e.g.:
docker run \
-e "DATABASE_URL=postgresql://..." \
-p 3000:3000 \
-t \
electricsql/electric:latest
You can use any Postgres (new or existing) that has logical replication enabled. You also need to connect as a database user that has the REPLICATION role.
See the PostgreSQL Permissions guide for detailed instructions on configuring database users with the necessary permissions for Electric.
You can also choose to build and run Electric from source as an Elixir application.
Clone the Electric repo:
git clone https://github.com/electric-sql/electric.git
cd electric
Install the system dependencies with asdf. Versions are defined in .tool-versions:
asdf plugin-add elixir
asdf plugin-add erlang
asdf plugin-add nodejs
asdf plugin-add pnpm
asdf install
Install the packages/sync-service dependencies using Mix.:
cd packages/sync-service
mix deps.get
Run the development server:
mix run --no-halt
This will try to connect to Postgres using the DATABASE_URL configured in packages/sync-service/.env.dev, which defaults to:
<<< @/../packages/sync-service/.env.dev{shell}
You can edit this file to change the configuration. To run the tests, you'll need a Postgres running that matches the :test env config in config/runtime.exs and then:
mix test
If you need any help, ask on Discord.