--- sidebar_position: 0 sidebar_custom_props: icon: TbDeviceDesktop --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; # Local Setup This section will guide you through the Twenty installation on your local environment. Twenty is designed to be developer-friendly, and your local installation should be up and running in a few minutes. In a nutshell: - We recommend using `yarn` installation but we also provide an easy way to run the project with Docker. - Twenty uses PostgreSQL as a database. If you don't a PostgreSQL instance available, we also provide a one-line command to provision one through Docker. The repository is structured as follows: ``` twenty └───docs // contains this documentation └───front // contains the frontend code for the application └───server // contains the backend code for the application └───infra // contains docker configurations for development and production deployments ``` ## Yarn install (recommended) **Note:** `npm` currently does not support local packages satisfactorily. We strongly recommend using `yarn` instead. ### 1. Pre-requisites You need to have [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git), [node](https://nodejs.org/en/download) and [yarn](https://classic.yarnpkg.com/lang/en/docs/install/) installed on your computer. ### 2. Git clone ``` git clone git@github.com:twentyhq/twenty.git ``` ### 3. PostgreSQL database You also need to have a PosgresSQL database available. If you already have one available, you can skip this step. If you don't, you can provision one through `docker` using the following command: ```bash cd twenty make provision-postgres ``` This will create a Docker container, exposing a PostgresSQL instance at [http://localhost:5432](http://localhost:5432). This instance is containing two databases: `default` and `test` You can access them using `twenty` postgres user (password: `twenty`) Install PostgresSQL on WSL2: ```bash sudo apt update sudo apt install postgresql postgresql-contrib ``` Start postgresql service and connect to the database using default `postgres` user: ```bash sudo service postgresql start sudo -u postgres psql ``` Create two databases: ```sql CREATE DATABASE "default"; CREATE DATABASE "test"; ``` Create a `twenty` user with password `twenty`: ```sql CREATE USER twenty PASSWORD 'twenty'; ALTER USER twenty CREATEDB; ``` ### 4. Setup env variables Twenty requires a few environment variables to be set. Locally, we recommend setting them through a `.env` file. To do so, make copies of the `.env.example` files in `/front` and `/server`: ```bash cp ./front/.env.example ./front/.env cp ./server/.env.example ./server/.env ``` ### 5. Server setup **Note:** we recommend that you use `nvm` to install the correct `node` version. We have added a `server/.nvmrc` to ensure all contributors are using the same version. To build Twenty server and seed some data into your database: ```bash cd server nvm install #recommended nvm use #recommended yarn yarn prisma:reset yarn start:dev ``` Twenty server will be running at [http://localhost:3000](http://localhost:3000). ### 6. Frontend setup **Note:** similarly, we recommend that you use `nvm` to install the right node version. ```bash cd ../front nvm install #recommended nvm use #recommended yarn yarn start ``` Twenty front will be running at [http://localhost:3001](http://localhost:3001). ### 7. Sign in to your local Twenty installation Open [http://localhost:3001](http://localhost:3001) in your web browser. You can login using our seeded demo account: `tim@apple.dev`. ## Docker install You can also provision the project with Docker. This comes with a few advantages: - It provides the exact same environment as our core developer team. - It includes some additional dependencies (such as `playwright`) that you might need if you wish to contribute to some advanced areas of the project. - It provisions a PostgreSQL database. ### 1. Pre-requisites Make sure you have the latest `Docker` and [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) versions installed on your computer. You can run `docker --version` to verify the installation. ### 2. Git clone ```bash git clone git@github.com:twentyhq/twenty.git ``` ### 3. Setup env variables Twenty requires a few environment variables to be set. Locally, we recommend setting them through `.env` files. ```bash cp ./front/.env.example ./front/.env cp ./server/.env.example ./server/.env ``` The default values should work out of the box, except for the postgres URL, which requires a small modification. Open `./server/.env` and change to the following: ```bash PG_DATABASE_URL=postgres://twenty:twenty@postgres:5432/default?connection_limit=1 ``` ### 4. Build We provide an environment containerized with Docker and orchestrated with `docker-compose`. This installation method will also provision a PostgreSQL container. **Note:** the configuration for the build is stored in the `infra/dev` folder, but you can run `make` commands directly from the root folder. ```bash make build ``` ### 5. Migrate & seed Before running the project, you need to initialize the database by running the migrations and seed. Start the containers: ```bash make up ``` Run database migrations, generate prisma client, and seed: ```bash make server-prisma-reset ``` ### 6. Start Twenty Run the project with the following commands from `root folder`: ```bash make server-start ``` ```bash make front-start ``` You should now have: - **front** available on: [http://localhost:3001](http://localhost:3001) - **server** available on: [http://localhost:3000/graphql](http://localhost:3000/graphql) - **postgres** available on [http://localhost:5432](http://localhost:5432) and containing database named `default` ### 7. Sign in to your local Twenty installation Open [http://localhost:3001](http://localhost:3001) and sign in using our seeded demo account `tim@apple.dev` (password: `Applecar2025`) ### 8. (Optional) If you don't want to use the `make` command and work directly from the container, you can also ssh directly into the container: ```bash make sh ``` Then run commands through yarn: ```bash cd server yarn prisma:reset ```